{"id":13616428,"url":"https://github.com/nickjj/build-a-saas-app-with-flask","last_synced_at":"2025-05-15T03:04:49.214Z","repository":{"id":32387289,"uuid":"35963722","full_name":"nickjj/build-a-saas-app-with-flask","owner":"nickjj","description":"Learn how to build a production ready web app with Flask and Docker.","archived":false,"fork":false,"pushed_at":"2024-12-07T18:29:13.000Z","size":1846,"stargazers_count":977,"open_issues_count":0,"forks_count":190,"subscribers_count":46,"default_branch":"master","last_synced_at":"2025-05-08T20:50:12.081Z","etag":null,"topics":["docker","flask","python","stripe"],"latest_commit_sha":null,"homepage":"https://buildasaasappwithflask.com","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nickjj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"nickjj","custom":["https://www.paypal.me/nickjanetakis"]}},"created_at":"2015-05-20T17:40:15.000Z","updated_at":"2025-04-24T14:17:57.000Z","dependencies_parsed_at":"2024-12-08T23:00:27.267Z","dependency_job_id":"4aa72516-6a24-4406-887f-a86c0fe77198","html_url":"https://github.com/nickjj/build-a-saas-app-with-flask","commit_stats":{"total_commits":367,"total_committers":1,"mean_commits":367.0,"dds":0.0,"last_synced_commit":"7b78160d548b1fff58bf0e69bb4fcb71452d6320"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickjj%2Fbuild-a-saas-app-with-flask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickjj%2Fbuild-a-saas-app-with-flask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickjj%2Fbuild-a-saas-app-with-flask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickjj%2Fbuild-a-saas-app-with-flask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nickjj","download_url":"https://codeload.github.com/nickjj/build-a-saas-app-with-flask/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264765,"owners_count":22041793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","flask","python","stripe"],"created_at":"2024-08-01T20:01:28.378Z","updated_at":"2025-05-15T03:04:49.189Z","avatar_url":"https://github.com/nickjj.png","language":"HTML","funding_links":["https://github.com/sponsors/nickjj","https://www.paypal.me/nickjanetakis"],"categories":["HarmonyOS","HTML"],"sub_categories":["Windows Manager"],"readme":"## Welcome to The Build a SAAS App with Flask Course!\n\n*A video course where we build a real world web application with Flask, Celery,\nRedis, PostgreSQL, Stripe and Docker.*\n\n**Full details on the course can be found here:**  \n[https://buildasaasappwithflask.com](https://buildasaasappwithflask.com/?utm_source=github\u0026utm_medium=bsawf\u0026utm_campaign=readme-top)\n\n### Getting started\n\nYou'll need to enable Docker Compose v2 support if you're using Docker\nDesktop. On native Linux without Docker Desktop you can [install it as a plugin\nto Docker](https://docs.docker.com/compose/install/linux/). It's been generally\navailable for a while now and is stable. This project uses specific [Docker\nCompose v2\nfeatures](https://nickjanetakis.com/blog/optional-depends-on-with-docker-compose-v2-20-2)\nthat only work with Docker Compose v2 2.20.2+.\n\n```sh\ncp .env.example .env\ndocker compose up --build\n```\n\nAfter everything is up and running, visit http://localhost:8000.\n\nDid you receive a `depends_on` \"Additional property required is not allowed\"\nerror? Please update to at least Docker Compose v2.20.2+ or Docker Desktop\n4.22.0+.\n\nDid you receive an error about a port being in use? Chances are it's because\nsomething on your machine is already running on port 8000. Check out the docs\nin the `.env` file for the `DOCKER_WEB_PORT_FORWARD` variable to fix this.\n\nDid you receive a permission denied error? Chances are you're running native\nLinux and your `uid:gid` aren't `1000:1000` (you can verify this by running\n`id`). Check out the docs in the `.env` file to customize the `UID` and `GID`\nvariables to fix this.\n\n### How does this source code differ than what's in the course?\n\nIn the course we build up a 4,000+ line Flask application in 15 stages while\nI'm at your side explaining my thought process along the way. You will get to\nsee the source code grow from a single `app.py` file to a large code base that\nspans across dozens of files and folders.\n\n#### This repo includes up to the 6th stage. By this point in the code base, you'll be introduced to concepts such as:\n\n- Using Docker to \"Dockerize\" a multi-service Flask app\n- Using Flask extensions\n- Flask blueprints\n- Jinja templates\n- Working with forms\n- Sending e-mails through Celery\n- Testing and analyzing your code base\n\n#### The rest of the course covers topics such as:\n\n- A crash course on Docker and Docker Compose (including multi-stage builds)\n- Going over the application's architecture and tech choices\n- Creating a full blown user management system\n- Creating a custom admin dashboard\n- Logging, middleware and error handling\n- Using Click to create custom CLI commands\n- Accepting recurring credit card payments with Stripe\n- Building up a dice game called \"Snake Eyes\"\n- Responding with JSON from Flask and creating AJAX requests\n- Processing microtransaction payments with Stripe\n- Dealing with database migrations\n- Converting your app to support multiple languages (i18n)\n- A crash course on Webpack, ES6 JavaScript and SCSS\n\n**By the time you finish the course, you'll have all the confidence you need to\nbuild a large web application with Flask**.\n\n---\n\nThere's over 187 video lessons, 25+ hours of content, coding exercises and an\ne-book that's included. You also get free updates for life as well as life time\nsupport. I've added 15+ hours of free updates over the years.\n\nThese updates range from adding new features like Webpack to keeping Python,\nNode and all package / service versions up to date. There's even 1 update\nthat's a 5 hour live recording where I updated a bunch of things at once. This\nincludes using git too (making good commits, interactive rebasing, etc.), live\ndebugging and Googling for errors.\n\nAlso as a bonus, there's an additional 18 video lessons and 3 hours of content\nthat covers building a separate RESTful API driven application that uses\nwebsockets.\n\n**Everything you'd want to know about the course can be found here:**  \n[https://buildasaasappwithflask.com](https://buildasaasappwithflask.com/?utm_source=github\u0026utm_medium=bsawf\u0026utm_campaign=readme-bottom)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickjj%2Fbuild-a-saas-app-with-flask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnickjj%2Fbuild-a-saas-app-with-flask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickjj%2Fbuild-a-saas-app-with-flask/lists"}