Skip to content
A robust template for Flask applications
Python Dockerfile HTML Mako CSS
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows
migrations
project
tests
.dockerignore
.editorconfig
.gitignore
Dockerfile
LICENSE
Procfile
README.md
TODOs.txt
actors.py
cli.py
docker-compose.yml
envrc.example
pyproject.toml
requirements-dev.txt
requirements-test.txt
requirements.txt
setup.cfg
tox.ini
wsgi.py

README.md

mofanhu

A robust template for Flask applications.

https://www.flickr.com/photos/sophies/5393505900/

[..] Put water into a bottle it becomes the bottle.

Features

  • Python 3.8 as a base.
  • Clean and organised structure for a medium size or large web project.
  • Staying close to the 12 Factor App ideals.
  • Well configured Flask CLI tool for user friendliness.
  • Integrated Konch and DebugToolbar for easier debugging.
  • Project configuration based on environs for automatic validation and type conversion.
  • Development configuration using direnv, overridable by environment variables.
  • Serving dynamically rendered HTML page and example static files with pure Flask. Example template.
  • Example API endpoints in two flavours: Flask-RESTful and flask-smorest.
  • Support for PostgreSQL database and ORM models using SQLAlchemy. Example model.
  • Support for migrations with alembic. Example migration.
  • Support for background tasks with dramatiq. Example task.
  • Configuration for running on Heroku cloud.
  • Separate production, testing and development requirements.
  • Easy testing with tox and py.test. Example tests.
  • Support for fast and efficient testing of database code using transactions and parallel workers.
  • Basic code linting with black, flake8 and isort.
  • Github Actions testing with Python application setup.
  • Easy entry vector for WSGI servers, demonstrated with Gunicorn.
  • Dockerfile to build a minimal¸ production-ready Docker image.
  • Rudimentary definition for Docker Compose to launch the complete project.
  • Practical CRUD UI using Flask-Admin.
  • EditorConfig support.

Running

With Docker

Note: Ensure you have a working system Docker installation.

Install Docker Compose:

$ pip install -U docker-compose

Start the complete stack in a standard way:

$ docker-compose up --build --detach

Check the logs

$ docker-compose logs --follow

Manually

Note: Ensure you have a working Python 3.8 installation.

Create a virtualenv:

$ virtualenv -p `which python3.8` .env

Install dependencies:

$ source .env/bin/activate
$ pip install -Ur requirements.txt

Prepare the environment (direnv has to be preinstalled):

$ cp envrc.example .envrc
$ direnv edit

Run the development web server:

$ flask run

Tests

Install the tooling:

$ pip install -U tox

Run the tests

$ tox
You can’t perform that action at this time.