/flask-scaffold

A scaffold to speed up launching a flask project.

Primary LanguagePythonMIT LicenseMIT

flask-scaffold

Codacy Badge Github Actions Docker Build Status License

A scaffold to speed up launching a flask project, set up with minimal dependencies.

You can just remove LICENSE, .git/, and .vscode/ files if you don't need them.

There is no silver bullet, so if other libraries or practice are preferred, you can add or change anything as you like.

Prerequisites

  • Python 3.10+

  • Poetry

  • (Optional) Docker and docker compose

Main features

  • APIFlask
  • Blueprint templates to organize directory structure
  • Colorful logger in terminals, stolen from tornado
  • Gunicorn uvicorn server for production use
  • Integrated with static analysis and lint tools like mypy and ruff
  • Default Github Actions and Heroku configuration

Common tasks

Create virtual environment with dependencies

python3 -m venv .venv && source .venv/bin/activate && poetry install

Run development flask server

flask run --debug

Run development uvicorn server

uvicorn asgi:app --port 5000 --reload

Run development gunicorn server

gunicorn -b :5000 asgi:app -k uvicorn.workers.UvicornWorker --reload

Run production gunicorn server

./boot.sh

Build docker image

docker build .

Run with docker compose

docker-compose up --build