• Stars
    star
    959
  • Rank 47,674 (Top 1.0 %)
  • Language
    HTML
  • License
    MIT License
  • Created over 9 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Learn how to build a production ready web app with Flask and Docker.

Welcome to The Build a SAAS App with Flask Course!

A video course where we build a real world web application with Flask, Celery, Redis, PostgreSQL, Stripe and Docker.

Full details on the course can be found here:
https://buildasaasappwithflask.com

Getting started

This project takes advantage of Docker Compose v2 features. If you're using Docker Desktop, please enable Docker Compose v2 in your settings. If you're not using Docker Desktop please install the official Docker Compose Plugin.

cp .env.example .env
docker compose up --build

After everything is up and running, visit http://localhost:8000.

How does this source code differ than what's in the course?

In the course we build up a 4,000+ line Flask application in 15 stages while I'm at your side explaining my thought process along the way. You will get to see the source code grow from a single app.py file to a large code base that spans across dozens of files and folders.

This repo includes up to the 6th stage. By this point in the code base, you'll be introduced to concepts such as:

  • Using Docker to "Dockerize" a multi-service Flask app
  • Using Flask extensions
  • Flask blueprints
  • Jinja templates
  • Working with forms
  • Sending e-mails through Celery
  • Testing and analyzing your code base

The rest of the course covers topics such as:

  • A crash course on Docker and Docker Compose (including multi-stage builds)
  • Going over the application's architecture and tech choices
  • Creating a full blown user management system
  • Creating a custom admin dashboard
  • Logging, middleware and error handling
  • Using Click to create custom CLI commands
  • Accepting recurring credit card payments with Stripe
  • Building up a dice game called "Snake Eyes"
  • Responding with JSON from Flask and creating AJAX requests
  • Processing microtransaction payments with Stripe
  • Dealing with database migrations
  • Converting your app to support multiple languages (i18n)
  • A crash course on Webpack, ES6 JavaScript and SCSS

By the time you finish the course, you'll have all the confidence you need to build a large web application with Flask.


There's over 187 video lessons, 25+ hours of content, coding exercises and an e-book that's included. You also get free updates for life as well as life time support. I've added 15+ hours of free updates over the years.

These updates range from adding new features like Webpack to keeping Python, Node and all package / service versions up to date. There's even 1 update that's a 5 hour live recording where I updated a bunch of things at once. This includes using git too (making good commits, interactive rebasing, etc.), live debugging and Googling for errors.

Also as a bonus, there's an additional 18 video lessons and 3 hours of content that covers building a separate RESTful API driven application that uses websockets.

Everything you'd want to know about the course can be found here:
https://buildasaasappwithflask.com

More Repositories

1

docker-django-example

A production ready example Django app that's using Docker and Docker Compose.
Python
1,206
star
2

docker-rails-example

A production ready example Rails app that's using Docker and Docker Compose.
Ruby
987
star
3

dotfiles

Settings for various tools I use.
Shell
938
star
4

ansible-docker

Install / Configure Docker and Docker Compose using Ansible.
Python
750
star
5

orats

Opinionated rails application templates.
Ruby
665
star
6

docker-flask-example

A production ready example Flask app that's using Docker and Docker Compose.
Python
634
star
7

ansigenome

A tool to help you gather information and manage your Ansible roles.
Python
449
star
8

flask-webpack

A Flask extension to manage assets with Webpack.
Python
338
star
9

rolespec

A test library for testing Ansible roles
Shell
232
star
10

docker-web-framework-examples

Example apps that demonstate how to use Docker with your favorite web frameworks.
Elixir
218
star
11

docker-node-example

An example Node / Express app that's using Docker and Docker Compose.
Shell
212
star
12

docker-phoenix-example

A production ready example Phoenix app that's using Docker and Docker Compose.
Elixir
211
star
13

flask-static-digest

Flask extension to help make your static files production ready by md5 tagging and gzipping them.
Python
156
star
14

notes

A zero dependency shell script that makes it really simple to manage your text notes.
Shell
129
star
15

manifest-revision-webpack-plugin

Write out a manifest file containing your versioned webpack chunks and assets.
JavaScript
124
star
16

flask-db

A Flask CLI extension to help migrate and manage your SQL database.
Python
76
star
17

ansible-nginx

Install and configure nginx (SSL A+ by default) with Ansible.
Jinja
73
star
18

ansible-acme-sh

Install and auto-renew SSL certificates with Let's Encrypt using acme.sh.
71
star
19

wait-until

A zero dependency Bash script that waits until a command of your choosing has run successfully.
Shell
57
star
20

webserver

A zero dependency Python 3 web server to echo back an HTTP request's headers and data.
Python
50
star
21

dockercon21-docker-best-practices

Reference links for my live demo talk from DockerCon 21.
49
star
22

ansible-user

Create and configure a user for SSH key based logins and passwordless sudo.
48
star
23

ansible-fail2ban

Install and configure fail2ban using ansible.
46
star
24

runninginproduction.com

The website for the Running in Production podcast.
HTML
41
star
25

esbuild-copy-static-files

An esbuild plugin to copy static files that changed from a source directory to a destination directory.
Shell
37
star
26

flask-pg-extras

A Flask extension to obtain useful information from your PostgreSQL database.
Python
33
star
27

ansible-swapfile

Create and configure a swap file with Ansible.
32
star
28

ansible-letsencrypt

Install and auto-renew SSL certificates with Let's Encrypt and Ansible.
Python
29
star
29

invoice

Calculate a billable amount, hours and days logged for 1 or more projects.
Shell
18
star
30

ansible-playbooks

A collection of ansible playbooks with end to end examples.
Shell
18
star
31

nyhackr-cli-dev-env

Reference notes for the Creating a Command Line Driven Development Environment talk.
18
star
32

ansible-rails

Deploy a rails application using git with ansible.
Ruby
18
star
33

gowatcher

Reload a specified go program automatically by monitoring a directory.
Shell
16
star
34

docker-community-all-hands

Reference links to every talk I've given for the Docker Community All-Hands events.
15
star
35

deploy-web-apps-with-docker

Rescue yourself from the complexity of DevOps
Dockerfile
15
star
36

title-case-converter

A CLI tool to capitalize words based on industry standard style guides.
Python
14
star
37

sublime-text-3-packages

A list of my Sublime Text 3 packages along with their settings.
Python
14
star
38

flask-secrets

A Flask CLI extension to generate random secret tokens.
Python
14
star
39

verdiff

A CLI tool to diff 2 versions of a Phoenix, Rails, Django or Laravel generated project.
Python
12
star
40

ansible-security

Configure ssh and ufw as well as install fail2ban with ansible.
12
star
41

gemshine

Recursively compare a ruby project's gem versions to their latest versions.
Ruby
12
star
42

ansible-iptables

Configure iptables using Ansible.
12
star
43

lcurl

Visit a site every X seconds in a loop to help detect downtime while testing deployment strategies.
Shell
12
star
44

ansible-sshd

Install and configure openssh-server using Ansible.
12
star
45

demo-for-chattanooga-python-user-group

A demo app for a talk I gave at the Chattanooga python user group.
JavaScript
10
star
46

latest-releases

A command line tool that lets you keep tabs on the latest releases of your favorite tools and libraries.
Shell
10
star
47

ansible-monit

Install monit and configure as many processes as you want with ansible.
8
star
48

passify

A small utility to create a password and wrap bcrypt.
JavaScript
8
star
49

pick-random-youtube-comments

Get a list of top level comments from a YouTube video and then pick N amount of unique comment authors by choosing them randomly.
Python
8
star
50

ansible-bootstrap

Configure a server to run Ansible and install essential packages.
6
star
51

ansible-ferm

Manage iptables with ferm using ansible.
5
star
52

ansible-postgres

Install a bare bones version of postgres with ansible.
5
star
53

ansible-pumacorn

Manage a puma or unicorn rails process with init.d using ansible.
Ruby
5
star
54

docker-faye

A docker image for running a secure Faye (websocket) server.
JavaScript
5
star
55

ansible-nodejs

Install the latest stable version of nodejs with ansible.
4
star
56

ansible-mariadb

Install and configure MariaDB using Ansible.
4
star
57

ansible-sendy

Copy and configure Sendy with Ansible.
C
3
star
58

ansible-locale

Install and configure your system's locale using ansible
3
star
59

ansible-phpfpm

Install and configure php-fpm using Ansible.
2
star
60

ansible-dnsmasq

Install and configure dnsmasq to map a TLD to localhost using ansible.
2
star
61

docker-play-example

A production ready example Play app that's using Docker and Docker Compose.
1
star