# Awesome Flask

> A curated list of awesome things related to Flask.

Flask is a lightweight WSGI web application framework written in Python.

## Contents

- Third-Party Extensions
  - Admin
  - APIs
  - Auth
  - Cache
  - Data Validation and Serialization
  - Databases
  - Developer Tools
  - Email
  - Forms
  - Full-text Search
  - Security
  - Task Queues
  - Utils
- Resources
  - Official Resources
  - External Resources
  - Community
  - Conferences
  - Meetups
  - Podcasts
  - Tutorials
  - Courses
  - Books
  - Videos
- Hosting
  - PaaS
  - IaaS
  - Serverless
- Projects
  - Boilerplates
  - Open Source Projects

## Third-Party Extensions

### Admin

- Flask-Admin - Functional admin panel that provides a user interface for managing data based on your models.

### APIs

#### RESTful API Support

- Eve - RESTful API framework designed for human beings.
- Flask-Classful - Adds support for class-based views for setting up RESTful API route endpoints.
- Flask-MongoRest - RESTful API framework wrapped around MongoEngine.
- Flask-RESTful - Quickly build RESTful APIs.

#### RESTful API + Swagger/OpenAPI Documentation Support

- APIFlask - Integrates marshmallow for validation and serialization, and for OpenAPI generation with Swagger UI.
- Connexion - Open source, OpenAPI-based, REST framework built on top of Flask.
- Flasgger - OpenAPI and Swagger UI. Builds the API from Flasgger models, marshmallow models, dicts, or YAML files.
- Flask-Rebar - Combines Flask, marshmallow, and OpenAPI for robust REST services.
- Flask-RESTX - Community-driven fork of Flask-RESTPlus that makes it easy to build and document RESTful APIs with Flask.
- flask-smorest - Marshmallow’s official Flask REST integration. Uses marshmallow models for request/response validation and serialization, and generates OpenAPI with Swagger UI.

#### Swagger/OpenAPI Documentation Support

- SAFRS: Python OpenAPI & JSON:API Framework - SAFRS, which is an acronym for SqlAlchemy Flask-Restful Swagger, is meant to help developers create self-documenting JSON APIs for SQLAlchemy database objects and relationships.

### Auth

#### Basic Auth and Session-based (for HTML Endpoints)

- Flask-HTTPAuth - Authentication.
- Flask-Login - Account management and authentication.
- Flask Principal - Authorization.
- Flask-Security-Too - Account management, authentication, authorization.
- Flask-Session - Session managment.
- Flask-SimpleLogin - Authentication.
- Flask-User - Account management, authentication, authorization.

> Curious about the differences differences between Flask-User and Flask-Security? Review the Flask-User FAQ.

#### JWT-based (for JSON Endpoints)

- Flask-JWT - Basic support for working with JWTs.
- Flask-JWT-Extended - Advanced support for working with JWTs.
- Flask-JWT-Router - Adds authorized routes to a Flask app.
- Flask-Praetorian - Authentication and authorization for Flask APIs.

#### OAuth

- Authlib - Library for building OAuth and OpenID clients and servers.
- Authomatic - Framework agnostic library for Python web applications that simplifies authentication and authorization of users via OAuth and OpenID.
- Flask-Dance - OAuth support via OAuthLib.

### Cache

- Flask-Caching - Caching support.

### Data Validation and Serialization

- Flask-Marshmallow - Thin integration layer for Flask and marshmallow (an object serialization /deserialization library) that adds additional features to marshmallow.
- Flask-Pydantic - Pydantic support.

### Databases

#### ORMs

- Flask-Peewee - Support for Peewee, an ORM and database migration tool.
- Flask-Pony - Support for Pony ORM.
- Flask-SQLAlchemy - Support for SQLAlchemy, a SQL toolkit and ORM.

#### ODMs

- Flask-MongoEngine - Bridges Flask and MongoEngine for working with MongoDB.
- Flask-PyMongo - Bridges Flask and PyMongo for working with MongoDB.

#### Migrations

- Flask-Alembic - Configurable Alembic migration environment around a Flask-SQLAlchemy database for handling database migrations.
- Flask-DB - Flask CLI extension that helps you migrate, drop, create and seed your SQL database.
- Flask-Migrate - Handles SQLAlchemy database migrations via Alembic.

> Curious about the differences between Alembic, Flask-Alembic, Flask-Migrate, and Flask-DB? Review this item from Flask-DB’s FAQ.

#### Other Tools

- Flask-Excel - Uses pyexcel to read, manipulate, and write data in different Excel formats: csv, ods, xls, xlsx and xlsm.

### Developer Tools

#### Debugging

- Flask-DebugToolbar - Port of Django’s debug toolbar for Flask.
- Flask-Profiler - Endpoint analyzer/profiler.

#### Fixtures

- Flask-Fixtures - Create database fixtures from JSON or YAML.
- Mixer - Object generation tool.

#### Logging

- Rollbar - Flask error logging with Rollbar.

#### Monitoring

- Airbrake - Airbrake Flask integration.
- Elastic APM Agent - Elastic APM Flask integration.
- Flask Monitoring Dashboard - Dashboard for automatic monitoring of Flask web-services.
- Sentry Python SDK - Sentry SDK Flask integration.

#### Tracing

- OpenTelemetry - OpenTelemetry Flask Instrumentation.

#### Testing

- Flask-Testing - Unittest extensions.
- Pytest-Flask - Pytest support for testing Flask applications.

### Email

- Flask-Mail - Provides simple email sending capabilities.
- Flask-Mailman - A port of `django.mail` for Flask.
- Flask-Mail-SendGrid - Provides simple email base on Flask-Mail for sending email by SendGrid.

### Forms

- Flask-WTF - Integrates Flask with WTForms (provides CSRF protection as well).

### Full-text Search

- flask-msearch - Full-text search.
- Flask-WhooshAlchemy3 - Full-text search + Whoosh indexing capabilities for Flask-SQLAlchemy.
- SQLAlchemy-Searchable - Provides full-text search capabilities for SQLAlchemy models.

### Security

- Flask-Argon2 - Provides argon2 hashing utilities.
- Flask-Bcrypt - Provides bcrypt hashing utilities.
- Flask-CORS - Cross Origin Resource Sharing (CORS) handling.
- Flask-SeaSurf - Cross-site request forgery (CSRF) prevention.
- Flask-Talisman - HTTPS and security headers.

### Task Queues

- Celery - The most commonly used Python library for handling asynchronous tasks and scheduling.
- Dramatiq - Fast and reliable alternative to Celery.
- Flask-RQ - RQ (Redis Queue) integration.
- Huey - Redis-based task queue that aims to provide a simple, yet flexible framework for executing tasks.

### Utils

- Flask-Babel - Support for internationalization (i18n) and localization (l10n).
- Flask-File-Upload - Easy file uploads.
- Flask-FlatPages - Provides flat static pages based on text files.
- Frozen-Flask - Freezes a Flask application into a set of static files.
- Flask-GraphQL - GraphQL support.
- Flask-Injector - Adds support for dependency injection.
- Flask-Limiter - Rate limiting features to Flask routes.
- Flask-Moment - Moment.js date and time formatting helpers for Jinja2 templates.
- Flask-Paginate - Pagination support.
- Flask-Reactize - Hides the Node.js development backend for React behind a Flask application.
- Flask-Shell2HTTP - RESTful/HTTP wrapper for Python’s subprocess API, so you can convert any command-line tool into a RESTful API service.
- Flask-Sitemap - Sitemap generation.
- Flask-SocketIO - Socket.IO integration.
- Flask-SSE - Streaming with flask.

## Resources

### Official Resources

- Project Website - Official Flask website.
- Documentation - Comprehensive documentation for all Flask versions.
- Flaskr Tutorial - Build a basic blog application called Flaskr.
- Source Code - Hosted on GitHub.

### External Resources

- Full Stack Python’s Flask Page - Explanation of Flask philosophy and links to other resources and tutorials.

- Miguel Grinberg’s Blog - Multiple Flask-specific tutorials.

- Nick Janetakis’s Blog - Flask Tips, Tricks and Tutorials.

- Patrick Kennedy’s Blog - Numerous tutorials on learning Python web application development with Flask.

- RealPython - Many high-quality tutorials on Flask.

- TestDriven.io - Up-to-date tutorials on Flask.

### Community

- Discord - Pallets Projects community on Discord (use the `#get-help` channel for Flask support).
- IRC Channel - Chat with other Flask users on IRC channel `#pocoo` on FreeNode.
- Mailing List - General discussion of Flask and the Pallets projects (`flask@python.org`).
- Reddit - Flask subreddit.
- Stack Overflow - Questions tagged `flask`.
- Twitter - For official announcements on updates, security fixes, etc.

### Conferences

- FlaskCon - Community driven Flask event intended for speakers and attendees all over the world to participate in technical and evangelical sessions related to Flask.
- PyConWeb - Covers Django, Tornado, Flask, API frameworks. AsyncIO, networking, Frontend, JavaScript, and web security.
- Flask Conf Brazil - Conference for the developers and users of Flask.
- PyCon US - The largest annual gathering for the community using and developing the open-source Python programming language.
- PyCon Australia - National conference organized for the Python Programming Community.
- Euro Python - The largest Python conference in Europe.
- PyCon - Complete listing of all PyCons globally.

### Meetups

- Flask - 40+ groups in 20 countries.
- Python Web Development - 600+ groups in 81 countries.
- Python - 2,400+ groups in 100 countries.

### Podcasts

- TalkPython - The leading Python podcast with several episodes on Flask.
- Podcast Init - A popular Python podcast that features Flask guests on occasion.
- Python Bytes - Another Python podcast that discusses Flask from time to time.
- Full Stack Python’s Best Python Podcasts Page - A list of active Python-specific podcasts.

### Tutorials

- Flask Mega-Tutorial - Overarching tutorial for Python beginner and intermediate developers that teaches web development with the Flask framework.
- Flaskr TDD - Intro to Flask, Test-Driven Development (TDD), and JavaScript.
- Make a Web App Using Python & Flask! - Creating a Python Website from the Bottom Up.

### Courses

- Developing Web Applications with Python and Flask - This course focuses on teaching the fundamentals of Flask by building and testing a web application using Test-Driven Development (TDD).
- Test-Driven Development with Python, Flask, and Docker - Learn how to build, test, and deploy a production-grade microservice powered by Python, Flask, and Docker.
- Authentication with Flask, React, and Docker - Learn how to add authentication to a Flask and React microservice!.
- Deploying a Flask and React Microservice to AWS ECS - Learn how to deploy microservices to Amazon ECS powered by Flask, React, and Docker.
- Build a SAAS App with Flask - Learn to build web applications with Flask and Docker.
- Full Stack Foundations - Build a data-driven web app with Python.
- Designing RESTful APIs - Build and Secure a backend API server.

### Books

- Flask Web Development - Learn the framework from the ground up by developing, step-by-step, a real-world project.
- Real Python - Learn Python programming, by example.
- Explore Flask - Best practices and patterns for developing web applications with Flask.

### Videos

- PyVideo
- Practical Flask Web Development Tutorials
- Python Flask Tutorial: Full-Featured Web App
- Discover Flask - Full Stack Web Development with Flask

## Hosting

### PaaS

(Platforms-as-a-Service)

- Heroku
- PythonAnywhere
- AWS Elastic Beanstalk
- Google App Engine
- Microsoft Azure App Service
- Divio
- Render

### IaaS

(Infrastructure-as-a-Service)

- AWS EC2
- Google Compute Engine
- Digital Ocean
- Linode

### Serverless

Frameworks:

- Zappa
- Chalice

Compute:

- AWS Lambda
- Google Cloud Functions
- Azure Functions

## Projects

### Boilerplates

- cookiecutter-flask - With Bootstrap 4, asset bundling annd minification with webpack, starter templates, and registration/authentication.
- Cookiecutter Flask Skeleton - Flask starter project for Cookiecutter.
- Flask-AppBuilder - Simple and rapid application development framework that includes detailed security, auto CRUD generation for your models, Google charts, and much more.
- flask-base - Includes SQLAlchemy, Redis, User Authentication, and more.
- Flask-Bootstrap - Integrated SQLAlchemy, authentication, and Bootstrap frontend.
- flask-htmx-boilerplate - Boilerplate template for a Python Flask application with HTMX and Tailwind CSS.
- uwsgi-nginx-flask-docker - Docker image with uWSGI and Nginx for Flask applications in Python running in a single container.
- React-Redux-Flask - Boilerplate application for a Flask JWT Backend and a React/Redux Front-End with Material UI.
- MVC Flask - You can use the mvc pattern in your flask application using this extension.

### Open Source Projects

- ActorCloud - Open-source IoT Platform.
- Airflow
- Busy Beaver - Chicago Python’s Community Engagement Slack bot.
- FlaskBB - Classic forum software.
- Indico - Feature-rich event management system, made at CERN.
- Quokka CMS - The happiest CMS in the world.
- PythonBuddy - Online Python Editor with live syntax checking and execution.
- Redash - Designed to enable anyone, regardless of the level of technical sophistication, to harness the power of data big and small.
- SkyLines - Live tracking, flight database, and competition framework.
- Security Monkey - Monitors AWS, GCP, OpenStack, and GitHub orgs for assets and their changes over time.
- SecureDrop - Open-source whistleblower submission system that media organizations can use to securely accept documents from, and communicate with anonymous sources.
- SimpleLogin - Protect your online identity with email alias.
- sr.ht - Git hosting service (check out Why I chose Flask to build sr.ht’s mini-services as well).
- Timesketch - Collaborative forensic timeline analysis.

> NOTE: This project is powered by TestDriven.io. Please support this open source project by purchasing one of our Flask courses. Learn how to build, test, and deploy microservices powered by Docker, Flask, and React!

flask.md Github