Cookiecutter Fastapi Backend Save

:cookie: Cookiecutter template to build and deploy fastapi backends..batteries included

Project README

GitHub Actions status Release Status License Shield

cookiecutter-fastapi-backend

:cookie: Cookiecutter template to build and deploy fastapi backends..batteries included.

Quickstart

Install the latest Cookiecutter if you haven't installed it yet (this requires Cookiecutter 1.4.0 or higher):

pip install cookiecutter

Generate project:

cookiecutter https://github.com/nickatnight/cookiecutter-fastapi-backend.git

Features

  • :whale: Docker & Docker Compose integration and optimization for local development. Fast bundles using build stages and Poetry
  • :computer: Production ready Python web server using FastAPI
  • :pencil2: SQLModel Library for interacting with SQL databases from Python code, with Python objects. It is designed to be intuitive, easy to use, highly compatible, and robust
  • :light_rail: Alembic Lightweight database migration tool for usage with the SQLAlchemy Database Toolkit for Python
  • :globe_with_meridians: NGINX High Performance Load Balancer, Web Server, & Reverse Proxy
  • :lock: Let's Encrypt A free, automated, and open certificate authority (CA), provided by the Internet Security Research Group (ISRG)...with automatic cert renewal
  • :floppy_disk: postgresql Powerful open source object-relational database
  • :left_right_arrow: AsyncPG Database interface library designed specifically for PostgreSQL and Python/asyncio
  • :convenience_store: Redis In-memory data structure store, used as a distributed, in-memory key–value database, cache and message broker
  • :inbox_tray: Continuous Integration/Deployment Modular GitHub Actions to lint, build, test, and deploy to DigitalOcean cloud
  • :leftwards_arrow_with_hook: pre-commit Git hooks to maintain code quality using modern tooling (ruff, black, isort)

Input Variables

The generator (cookiecutter) will ask you for some data, you might want to have at hand before generating the project.

The input variables, with their default values (some auto generated) are:

  • project_name: The name of the project
  • project_slug: The development friendly name of the project. By default, based on the project name
  • project_slug_db: The database friendly name of the project. By default, based on the project name
  • author_email: The authors email...used for certbot
  • py_version: The version of Python to install. Options are 3.8, 3.9, 3.10, and 3.11
  • db_container_name: The name of the database container. Default db
  • backend_container_name: The name of the backend container. Default backend
  • nginx_container_name: The name of the nginx web server container. Default nginx
  • doctl_version: The version name of DigitalOcean Command Line Interface to use. Default 1.92.0
  • github_username: The username of the GitHub user. Used for badge display in generated project README.md
  • include_example_api: Include example API, models, schemas, and script to init db data. Options are y or n
  • deployments: Include docker-compose files needed for deployment step in GitHub Action. Options are y or n

More Details

After using this generator, your new project (the directory created) will contain an extensive README.md with instructions for development, deployment, etc. You can view it here

Development

This project uses Poetry to manage dev environment. Once installed:

  1. install packages with poetry install
  2. run tests with poetry run pytest tests

Pre-commit:

  1. Install pre-commit hooks with pre-commit install
  2. Run hooks with pre-commit run --all-files

Acknowledgements

Open Source Agenda is not affiliated with "Cookiecutter Fastapi Backend" Project. README Source: nickatnight/cookiecutter-fastapi-backend

Open Source Agenda Badge

Open Source Agenda Rating