Skip to content
Snippets Groups Projects
Pavel Kirilin's avatar
459bb431
History

python version Build status version

Flexible and Lightweight general-purpose template for FastAPI.

Usage

⚠️ Git, Python and Poetry must be installed and accessible ⚠️

Poetry version must be greater or equal than 1.1.8. Otherwise it won't be able to install SQLAlchemy.

python3 -m pip install fastapi_template
python3 -m fastapi_template
# or fastapi_template
# Answer all the questions
# 🍪 Enjoy your new project 🍪
cd new_project
docker-compose -f deploy/docker-compose.yml --project-directory . up --build

If you want to install in from sources then try this:

python3 -m pip install poetry
python3 -m pip install .
python3 -m fastapi_template

Features

Template is made with SQLAlchemy1.4 and uses sqlalchemy orm and sessions, instead of raw drivers.

It has minimum to start new excellent project.

Pre-commit integrations and excellent code documentation.

Generator features:

  • Different databases to choose from.
  • Alembic integration;
  • redis support;
  • different CI\CD templates;
  • Kubernetes config generation.

This project can handle arguments passed through command line.

$ python -m fastapi_template --help

usage: FastAPI template [-h] [--name PROJECT_NAME]
                        [--description PROJECT_DESCRIPTION]
                        [--db {none,sqlite,mysql,postgresql}]
                        [--ci {none,gitlab,github}] [--redis] [--alembic]
                        [--kube] [--dummy] [--routers] [--force]

optional arguments:
  -h, --help            show this help message and exit
  --name PROJECT_NAME   Name of your awesome project
  --description PROJECT_DESCRIPTION
                        Project description
  --db {none,sqlite,mysql,postgresql}
                        Database
  --ci {none,gitlab,github}
                        Choose CI support
  --redis               Add redis support
  --alembic             Add alembic support
  --kube                Add kubernetes configs
  --dummy, --dummy-model
                        Add dummy model
  --routers             Add exmaple routers
  --force               Owerrite directory if it exists