Build Python Web Apps with Flask Capstone Project

Put all of your Python and Flask knowledge to the test to create and deploy a fully-featured Flask application.

It’s time to put your Python and Flask skills to test. For this project, you will be asked to create your own Flask web application about any topic you’d like. On this page, we’ll describe the requirements of the application you will build.

This project is meant to be fairly independent. No two projects will be identical — we want you to build a Flask application that serves some purpose you’re personally interested in. No matter what your site does, this project should test your skills in the following areas:

Creating routes and serving HTML pages using templates Collecting user data with forms Storing and accessing data in databases Authenticating users and providing user accounts Deploying applications on the web While making your project, we expect that you will run into tasks that you’ve never done before in a Codecademy lesson. That’s a good thing! Take this as an opportunity to apply all of your understanding of Python, Flask, and web development and learn something new.

The Format

When creating your Flask application, make sure to include the following components.

Routes — Your application should have at least four distinct routes that each serve their own purpose.

Templates — Your application should have a base template that is extended to the template files for each of your other routes.

Forms — Your application should include at least 1 form that collects data from users.

Databases — Your application should have a SQLite database that has at least three tables storing data. You can implement your database using Flask-SQLAlchemy or by other means if you prefer.

Accounts and Authentication — Your application should utilize user accounts, require user login to access certain routes, and perform authentication. You can implement your login functionality with Flask-Login or by other means if you prefer.

Deploy and Share Your Report

Because this project is so open-ended, we would love it if you shared your final application with fellow learners on our forum. Deploy your app to a public server using Heroku or by other means if you prefer. Post your application and take a look at what applications other people have worked on — it might give you ideas for your next project.

Good luck and have fun!