Learn to Build Web Applications with Flask and Docker

We'll Build a Real World App That Accepts Payments and So Much More

Start Learning Now

3 hours of additional video on building RESTful APIs and using web sockets!

What Makes Flask and Docker Awesome?


5 things you'll love about Flask

  • Based on one of the most popular computer languages in the world
  • Minimalistic and easy to get started
  • Lightning fast (Pinterest's API serves 12+ billion reqs / day with Flask)
  • Vibrant community and ecosystem (100s+ of high quality extensions)
  • Profitable for employment and freelancing


Here's what Docker brings to the table

  • Removes tons of headaches when setting up your dev environment
  • Prevents issues such as "well, it worked on my machine!"
  • Easily move an application across environments or servers
  • Makes developing with teams a much more pleasant experience
  • You won't need expensive hosting to deploy your web applications

Flask Is Based on Python and It's Growing Fast

On StackOverflow Python Is More Popular Than JavaScript


It continues to be really popular in 2024 too!

This is one of best courses on Flask that I know of. The instructor has the code written out in advance and in each video he explains the new features added and how they fit into the previous version. This is the perfect way to do it in my opinion. Also, his code has super clear comments and docstrings, which makes it really easy to understand what is going on in such a large application. As a bonus, you also learn some stuff about Docker.

Mikael. M.

Who Is This For?

Anyone with a basic understanding of Python, HTML, CSS and JavaScript who wants to learn how to develop real world web applications.

This isn't a Python 101 course so please make sure you have general programming concepts down such as how variables, loops and functions work.

We start with the very basics with Flask and work our way into more complex topics. This course is aimed at both beginners and intermediate web developers looking to step up their game and start building real applications.

I started out with a bit of Python using the Think Python book, did the Real Python course for Flask and Miguel Grinberg's Flask Web Development tutorial. I found Nick's course and decided to give it a try and I honestly think it's giving me a different perspective on Flask and that I need to improve my Flask and Python skills. I like the use of Docker in it and will likely get Nick's The Docker for DevOps course too. Keep up the good work!

Nhial M.

I have been working with Flask for the past 3 years and I've also been a technical reviewer on the Mastering Flask Packt book, and even so, I am learning so much from you!

Pedro B.
  • Anyone looking to gain experience building real world / complex web applications
  • Anyone who wants to be proficient with server-side development and databases
  • Anyone seeking a way to set up an awesome Docker based development environment
  • Anyone looking to gain confidence to apply for Flask positions at software companies
  • Anyone looking to bid for Flask / web development freelance work

Not sure if it's a good fit for you? You have 1 full year to try out the course. 100% money back guarantee if you don't love it.

Topics Covered

Each video contains at least 1 major concept applied to the application we'll build and often times you'll see these concepts applied in a few different ways.

We cover a ton of material and here's some of what you'll learn as you progress through the course:

User AccountsHow to Plan an Application
Database SchemasDatabase Queries
Jinja TemplatesCode Analysis
Python 2 / 3 CompatibilityWriting Tests
Dependency ManagementFlask App Factory Pattern
Application ConfigurationFlask Blueprints
Flask ExtensionsCLI Scripts
Sending EmailForm Validation / Submissions
AJAX RequestsJSON Responses
Background WorkersRate Limiting
DockerDocker Compose
Secure TokensCustom Admin Dashboard
PaginationTemplate Macros
Generating Fake DataSearching and Sorting Data
Custom Error PagesException Handling
RoutingStripe Integration
MicrotransactionsRecurring Billing
InvoicingCoupon Codes
Design PatternsData Modeling
Subscription ManagementReceiving Webhooks
Database MigrationsInternationalization (i18)
Password Reset WorkflowAuthentication and Authorization
CSRF ProtectionTwitter Bootstrap v4
Webpack v5ES6 Javascript / SCSS

See Exactly What We'll Build Together

Combine Flask, Celery, Redis, PostgreSQL & Stripe to Build a Game

Recently updated for Python 3.12.x, Flask 3.0.x and Stripe's API!

Wow, what an amazing resource you've made. The app source is amazingly concise (clearly years of experience distilled). I'm a frustrated Django developer and was just getting started with Flask, trying to figure out how best to structure my app, absorb best practices, etc.. Funny thing is, every part of the stack you've chosen is exactly what I'd want to use.

David N.

Hi, I'm Nick Janetakis

I've built many projects with Flask and Docker over the years.

I'm a self taught full stack developer who has been learning and working as a freelance consultant for the last 20 years. The battle hardened source code used in this course is what I've personally used and tweaked from real world experience.

Over 20,000 people have taken at least one of my courses, which includes Dive Into Docker and HTTPS With Let's Encrypt.

Nick has always been quick to respond to my questions. I've never had a message fall through the cracks with Nick. He has become an invaluable mentor.

Kyle L., Software Developer

Nick is working around the clock answering questions. I encourage everyone to learn from Nick.

Ken, Web Developer

Nick is an awesome teacher who is always available to answer your questions in a kind and timely manner.

Vasco L., Software Developer

Yep, I Answer Support E-Mails on the Weekend

You'll Never Get Stuck Because I'm Always Around to Answer Your Questions

Course Curriculum

23 Sections | 212 Lessons | 29 Hours

1. Welcome to the Course 5 minutes
1.1 Course Introduction
1.2 Dealing with issues
2. Is Flask Right for You? 10 minutes
2.1 Introduction
2.2 What Is Flask?
2.3 What Kind of Web Sites Can You Build with Flask?
2.4 How Does Flask Compare to Other Frameworks?
2.5 Massive Companies Who Are Using Flask
3. Application Overview 10 minutes
3.1 Introduction
3.2 Going over the Demo App That We'll Build
3.3 Visualizing the Application's Architecture
4. Preparing to Follow Along 5 minutes
4.1 Introduction
4.2 Setting up an Initial Course Folder
4.3 Installing a Code Editor
4.4 Downloading the Course's Material
5. Getting Familiar with Docker 15 minutes
5.1 Introduction
5.2 Why Is It worth Using Docker?
5.3 Installing Docker on Linux, macOS and Windows
5.4 Making Sure Docker Works on Your System
6. Creating a Base Flask App 30 minutes
6.1 Introduction
6.2 Exploring the App's Package Dependencies
6.3 Taking a Look at the Application File
6.4 Investigating the Dockerfile
6.5 Running the Flask Application
6.6 Dealing with Configuration Settings
6.7 Coding Challenge
7. Blueprints and Jinja 2 Templates 25 minutes
7.1 Introduction
7.2 Creating Our First Flask Blueprint
7.3 Deciding on a Look for Our Application
7.4 Understanding Jinja 2 Templates
7.5 Creating the Home Page
7.6 Adding a Few Additional Pages
7.7 Coding Challenge
8. Testing and Code Quality 15 minutes
8.1 Introduction
8.2 Going over the requirements.txt Changes
8.3 Getting Comfortable Writing Tests
8.4 Investigating Our Code Test Coverage
8.5 Performing Static Analysis on the Code Base
8.6 Coding Challenge
9. Creating a CLI Script 10 minutes
9.1 Introduction
9.2 Why Do We Need a CLI Script?
9.3 Going over New Content Added to the Project
9.4 Getting Familiar with Click
9.5 Running the Commands We Created
9.6 Coding Challenge
10. Using Our First Flask Extension 5 minutes
10.1 Introduction
10.2 Going over the requirements.txt Changes
10.3 Debug Toolbar
10.4 Coding Challenge
11. Creating a Contact Form 40 minutes
11.1 Introduction
11.2 Going over the requirements.txt Changes
11.3 Configuring the App to Send e-mail
11.4 Adding the Contact Blueprint
11.5 Reviewing the Views
11.6 Looking into the Templates and Macros
11.7 Handling Forms with Flask-WTForms
11.8 Our First Taste of Celery
11.9 Running Celery with Docker Compose
11.10 Confirming It Works with Tests
11.11 Coding Challenge
12. Creating a Complete User System 1.25 hours
12.1 Introduction
12.2 Going over the requirements.txt Changes
12.3 Configuring the App to Handle Users
12.4 Adding the User Blueprint
12.5 Exploring the User Model
12.6 Initializing the Database
12.7 Logging Users in and Out
12.8 Registering New Users
12.9 Welcoming New Users
12.10 Allowing Users to Update Their Settings
12.11 Dealing with Password Resets
12.12 Modifications to Previous Blueprints
12.13 Confirming It Works with Tests
12.14 Coding Challenge
13. Creating a Custom Admin Dashboard 50 minutes
13.1 Introduction
13.2 Why Are We Not Using Flask-Admin?
13.3 Adding the Admin Blueprint
13.4 Viewing the Main Dashboard
13.5 Listing Users
13.6 Editing Users
13.7 Generating Fake Users with the CLI
13.8 Searching and Sorting Users
13.9 Deleting Users
13.10 Confirming It Works with Tests
13.11 Coding Challenge
14. Logging, Middleware and Error Handling 25 minutes
14.1 Introduction
14.2 Tracking Response Times for All Requests
14.3 Configuring Log Levels
14.4 Using Flask's Logger
14.5 Integrating Google Analytics
14.6 Fixing IP Addresses with Middleware
14.7 Custom Error Pages
14.8 Handling Exceptions in Production
14.9 Coding Challenge
15. Quality of Life CLI Improvements 10 minutes
15.1 Introduction
15.2 Creating Secure Tokens
15.3 Viewing All Route Endpoints
15.4 Breaking down Lines of Code
15.5 Coding Challenge
16. Accepting Recurring Payments 2.5 hours
16.1 Introduction
16.2 Signing up with Stripe
16.3 Going over the requirements.txt Changes
16.4 Configuring the App to Handle Payments
16.5 Adding the Billing Blueprint
16.6 Visualizing the Data Model Relationships
16.7 Creating Subscription Plans
16.8 Rendering Pricing Tables
16.9 Subscribing to a Plan (Front-End)
16.10 Subscribing to a Plan (Back-End)
16.11 Updating Your Payment Method
16.12 Informing Users of Expiring Credit Cards
16.13 Updating Your Subscription Plan
16.14 Cancelling Your Subscription
16.15 Extending the Admin Dashboard
16.16 Managing Coupons in the Admin (Front-End)
16.17 Managing Coupons in the Admin (Back-End)
16.18 Expiring and Subscribing with Coupons
16.19 Managing Subscriptions in the Admin
16.20 Generating Random Invoices
16.21 Reviewing Your Billing Details
16.22 Integrating Stripe Webhooks
16.23 Confirming It Works with Tests
16.24 Sales Charts, Refunds and More
16.25 Coding Challenge
17. Building the Snake Eyes Game 35 minutes
17.1 Introduction
17.2 Going over the requirements.txt Changes
17.3 Configuring the App to Handle Betting
17.4 Adding the Betting Blueprint
17.5 Exploring the Bet and User Models
17.6 Placing Bets (Front-End)
17.7 Placing Bets (Back-End)
17.8 Generating Random Bets
17.9 Viewing Betting History
17.10 Modifying the Admin User Details
17.11 Confirming It Works with Tests
17.12 Coding Exercise Homework Assignments
18. Processing Microtransactions 20 minutes
18.1 Introduction
18.2 Configuring the App for Purchases
18.3 Accepting Payments (Front-End)
18.4 Accepting Payments (Back-End)
18.5 Viewing the New Invoice History
18.6 Adding to and Modifying the Custom Admin
18.7 Confirming It Works with Tests
18.8 Coding Challenge
19. Database Migrations 30 minutes
19.1 Introduction
19.2 What Is a Database Migration?
19.3 Going over the requirements.txt Changes
19.4 Configuring Alembic
19.5 Creating Our First Migration
19.6 Sidetracking with pgAdmin III
19.7 Running Our First Migration
19.8 Creating and Running a Second Migration
19.9 Viewing the History of Your Migrations
19.10 Auto-Generating Migration Scripts
20. Internationalization (i18n) 25 minutes
20.1 Introduction
20.2 What Is Internationalization?
20.3 Going over the requirements.txt Changes
20.4 Configuring the App to Handle i18n
20.5 Adding i18n Support to the Application
20.6 Updating the User Blueprint to Support i18n
20.7 Updating the Billing Blueprint to Support i18n
20.8 Generating the Primary messages.pot File
20.9 Updating Translations for Multiple Languages
20.10 Adding Additional Languages
20.11 Confirming It Works with Tests
20.12 Coding Challenge
21. Where to Go Next? 1.5 hours
21.1 Congrats on Finishing This Course
21.2 Continue Learning
21.3 Live Demo of Planning a Real World Web Application from Scratch
22. BONUS: Updates to the Snake Eyes Application 16 hours
22.1 Bug Fixes and Oversights (May 2018)
22.2 Upgrading to Flask 1.0 and More (May 2018)
22.3 Python 3.7 Compatibility and Package Updates (April 2019)
22.4 Docker Updates and Environment Specific Settings (April 2019)
22.5 Launching a Flask Shell for Interactive Programming (April 2019)
22.6 Bug Fixes and Oversights (August 2019)
22.7 Upgrading to Flask 1.1 and More (August 2019)
22.8 Bug Fixes and Digesting Static Files (Oct 2019)
22.9 Upgrading to Python 3.8.1 and More (Dec 2019)
22.10 Webpack Benefits, Bootstrap v4 and Going over the SCSS / ES6 JS (Dec 2019)
22.11 Back-end changes, Docker updates and the Webpack Config (Dec 2019)
22.12 Update CLI Commands to Use the Flask CLI (Feb 2020)
22.13 Generating a Custom Project with This Script (Jun 2020)
22.14 Updating Packages, Services and Stripe's API (Jul 2020)
22.15 Front-End Updates and Bug Fixes (Aug 2020)
22.16 Updating Everything to Their Latest Versions (Mar 2021)
22.17 Docker Updates, PIP Lock File and 2 New Flask Extensions (Mar 2021)
22.18 Add New Run Script, Health Check and More (Mar 2021)
22.19 Updating Flask to 2.0 and Other Updates / Refactoring (May 2021)
22.20 Updating Package Versions and Hadolint (Nov 2021)
22.21 Updating to Python 3.11, Flask 2.2 and Way More (Nov 2022)
22.22 Updating to Flask 2.3 and Much More (Aug 2023)
22.23 Updating to Flask 3.0 and Python 3.12 (Dec 2023)
23. BONUS: Building a RESTful API and Using Web Sockets 4 hours
23.1 Prerequisites for following along with This Section
23.2 Going over the Demo App We'll Be Building
23.3 Defining, Using and Building APIs
23.4 Visualizing the Application and Going over Library Choices
23.5 Setting up the Base Application
23.6 Getting a Feel for the User and Auth API Endpoints
23.7 Creating Users with a RESTful API (Frontend)
23.8 Creating Users with a RESTful API (Backend)
23.9 Logging in and Logging Out with JWT Based Authentication
23.10 Fake Facts Preparation and Overview
23.11 Listing Fake Facts
23.12 Adding Fake Facts
23.13 Editing and Deleting Fake Facts
23.14 Showing Community Fake Facts
23.15 When to Use Web Sockets and How to Add Them to Your App
23.16 Signing up for Pusher and Configuring the App to Use It
23.17 Sending Events over Public Web Socket Channels with Pusher
23.18 Dealing with Private and Presence Channels Using Pusher
23.19 Upgrading to Flask 1.1 and More (Aug 2019)
23.20 Updating Everything to Their Latest Versions (Mar 2021)
23.21 Upgrading to Flask 2.3 and Nested Blueprints (Aug 2023)

Nick has a great delivery style and each video feels like he's with you stepping you through the code. Whenever a problem has occurred, even if it's not directly related to the code/course content, Nick has been gone above and beyond in getting it resolved. I've never known any other course author to do that. If you want to learn Flask or just about building a SAAS app, look no further.

Kuli M.

BONUS: Building RESTful APIs and Using Web Sockets

Take a Look at What We'll Build in 3 Hours with This Free Bonus App

This bonus section is included with the main course. It is immediately available after signing up. It's like you're getting 2 courses in 1!

Action Packed Videos Without the Fluff

Enjoy Fast Paced Videos That Don't Bog You Down With Unnecessary Details

Here's What You'll Get
Download and Stream 1080p HD DRM-free Videos
Lifetime access to all 23 Sections
Lifetime access to all 212 Lessons
~29 Hours of content
25 Self guided coding challenges
15 versions of the web app (built up in stages)
108 page PDF / epub / mobi course workbook
25 page PDF bonus guide on how to plan any web app
New Bonus section for building RESTful APIs and using web sockets
New Updated for Python 3.12+ which has improved performance
New Update videos for Flask 3.0+ and other package updates
New Updated with Webpack & Bootstrap v4 to modernize the front-end
Private forums to ask questions and get answers
24 / 7 support so you don't get stuck
Free updates for life
365 day money back guarantee, 100% risk free
Get the Course | $99 $59

Looking for a team license discount or personalized training? Contact me at nick.janetakis@gmail.com.

I have spent weeks researching the exact topics this course covers and it has been a very slow painful process. This course is laying it all out for me on a platter. Best $59 bucks I've ever spent.

Daniel J.

Frequently Asked Questions

Do You Have Questions? No Worries, I Have Answers

But Is This Course Worth It?

Years of experience and best practices packed into 29+ hours of content.

Instead of spending hundreds of hours furiously Googling around on your own while you second guess every decision, you can sit back and relax while someone who has been in the trenches for 2 decades provides you working solutions and insights over a few hours.

You're getting a comprehensive learning experience that was distilled from years of web development while building dozens of applications.

Are We Going to Build the Application 1 Line at a Time?

Nope but we will go over the app in 15 different stages of development.

It's easy to do live coding "from scratch" when you deal with toy examples, but when you're dealing with an application that has 4,000+ lines of Flask code and thousands of lines of HTML, CSS and JavaScript it's no longer feasible to code everything 1 character at a time.

No one wants to hear me narrate "ok now type D I V close bracket" for the 733rd time haha. You would be bored to tears and there would be 80+ hours of tedious video.

Instead, the code base is broken up into 15 stages of development where it starts with a single app.py file and grows in stages while we learn and explore new application features such as users, the admin dashboard, accepting payments and so on.

I do go over every line of code so you'll get to see how to do it along with the "why" (which is the most important part in my opinion). You will also have plenty of time to write custom code because there are over a dozen coding challenges where you'll get to implement real world features into the application. Nearly everyone I asked prefers this style of learning.

What's with the Bonus App on Building RESTful APIs?

A lot of folks asked me to make a course on building APIs, so I listened.

The goal of the Build a SAAS App with Flask course is to get you comfortable developing web applications with Flask. It's not limited specifically to building software as a service applications.

With that said, I didn't think it was fair to make a separate paid course to learn about building APIs with Flask, so I locked myself in my office for 6 weeks and created a completely separate bonus app along with 18 videos that cover building RESTful APIs (and web sockets) with Flask.

When I say "free updates for life", I mean it. This bonus section is 100% free to anyone who enrolls into the Build a SAAS App with Flask course (this course). Think of it as a companion to the main course for mastering Flask. It's immediately available in the last section of the main course.

How Does the Sign Up Process Work?

It's so easy that you'll be watching your first video in about 60 seconds.

After clicking the get the course button you'll be taken to a form where you'll fill out your name, email and password. Then you'll be asked for your billing details. This creates an account on my platform.

After filling out that short form, you'll be immediately taken to the course back-end where you can either binge watch the entire course in one day, or take it at whatever pace works best for your schedule (you'll have lifetime access).

It's also worth mentioning that I use Stripe or PayPal to process all payments. Your billing details are safely processed and stored on their servers, not mine.

What Can I Expect in Terms of Video Quality?

All videos were recorded at 1920x1080 (1080p).

If you stream the videos you'll have an option of watching them at 1080p, 720p or 480p.

This course was recorded with a studio grade microphone and I'm using serious business headphones to edit everything. There are no disgusting mouth noises, or heavy breathing going on in my videos.

Can I Make Money Off Your Example Project?

Yes, I encourage you to make millions off it!

I want you to walk away being very confident building web apps with Flask, but more importantly I also want to give you a high quality code base that you can apply to your own projects.

You have my full permission to use the example project for any client work you do. So feel free to use it as a base for a $10,000 solution that you sell to a client.

The only limitation is that you're not allowed to distribute anything publicly. For example, please don't post it on your GitHub page or any other public location. This goes for any of the course's content!

What if I Don't Love the Course?

You have a 365 day money back guarantee, 100% risk free.

I want to make sure you're very happy with the course. The last thing I'm trying to do is trick you into buying something. I only want your money if you found real value from taking the course.

If you're not satisfied, then shoot me an e-mail at nick.janetakis@gmail.com and I will refund you.

Just started the course. Instructions are clear and straight to the point. Makes it easy to follow. The lectures are also not too long, so you can stay focused.


I like the presenters style and course outline. Very easy to follow. Good pace. Not boring.

David M.

Well organized, thorough, and completely understandable.

Lynn S.

Includes amazing contents that you will absolutely need for a web app. This is one of the best online courses I have ever taken.

Edwin H.

Nick explains the concepts clearly, his source code matches the videos; he is also very easy to understand. Great job!

Angel R.

Great course! It is truly from scratch and goes through every step.

Rob L.

A very clear course with good lecture notes and instructions. Extremely helpful and responsive instructor as well! Recommending this course for anyone who wants to use Python Flask to build a real world application.

Kel Z.

Thorough, clear and logical presentation, and great material. Thanks for putting this course together.


I have never taken a course before that was put together and delivered this well. Thank you Nick!

Joseph V.

The course is organized well and the instructions are thorough without being overwhelming. The project is awesome so far and goes over everything I want to learn. I also like that it was so easy to set up on my computer and I have all the files I need to quickly follow along with the next section's videos and the course notes file contains a really good summary for each section along with the commands we go over which comes in handy for easy reference. I'm getting more and more confident as I go and with this course I finally feel like this subject is something I can really master to make my apps. Other resources I've tried so far are okay but this one really is the best I've found for my learning progress.

Pa M.

The instructor speaks very clearly, and at a good pace. When reviewing the material, you can play the videos at 1.5x and although it sounds fast, he speaks clearly enough that you can still understand. The code examples are very strong. The project is structured well, and there are plenty of examples of tests, SQLAlchemy models, and useful advanced Flask functionality. The inclusion of Docker is great in my opinion. I consider myself very fortunate to have stumbled upon this course whilst looking for the best way to learn Flask (I purchased it over 2 months ago).

Duncan B.

This course is terrific. It shows a complete and practical development workflow that includes Docker. I was always wondering what was the best setup for running tests when developing with Docker. This course answers that using Docker and Docker Compose. In summary it has good videos, good code and solid best practices.


This is an excellent course! It gives an in-depth look at creating professional websites using Flask and Docker. Nick's attention to detail is great, just as it is in the Docker for DevOps course. If you are comfortable with the basics of programming in Python then this is perfect to take your game to the next level. It will save you a lot of time in figuring out how to implement a professional grade web app in Flask. The Docker usage is an extra bonus and something that I think everybody should be learning at this point.

Jeremy C.

This course is amazing. It's very detailed and pleasant to follow. The comments are easy to understand, even for a non-English speaker (I'm French). I learned a lot of things, including side topics such as Docker. Congrats and many thanks for this great work :)

Eric P.

I already knew Flask but this course showed me many things I didn't know! And I like that Nick uses Docker. Thanks for the great course.

Blagovest D.

Dude, this was really well thought out. The ability to show core biz logic, I'm excited for this course moving forward!

Chad B.

This is the best training I ever had in Flask!


Well thought out. Covers a ton of new information while presenting things in bite size chunks which are easy to understand.

Brian S.

Lots of meat in this course.

Mirabello V.

Almost halfway through and I'm very satisfied. Still pretty much a Python beginner, between the video instruction and support from Nick and the other students on the forums I'm attaining a good understanding of working with both Docker and Flask. It really is great value.

Tony T.

Now that I've had a chance to put what I learned into practice, all I can say is WOW! If there's ANY Flask course you want to take, take this one first. I don't remember how much I paid, but it should have been much more. Nick dismantles the mysteries of using the Flask framework for application development by teaching you the functional topology of a properly designed Flask app, with thorough, step-by-step instructions at each stage in the complex project's development.

Kevin G.

This is a very enlightening course. I'm looking forward to create my first SAAS app.

Jose A.

Really well done! This is an amazing resource to break into server based web development.

Tim D.

After I completed this course, I must say it's a goldmine for anyone eager to dive into real-world application development. The integration of Flask with Docker is taught in such a pragmatic way that it simplifies even the most complex topics. The bonus sections on RESTful APIs and web sockets are just the cherry on top, providing additional depth. This course not only boosted my skills but also my confidence in building scalable applications. Highly recommended for those who want to enhance their web development prowess with Python!

Koen E.

Are You Ready to Become a Flask Master?

Take the Course