zhanymkanov/fastapi_production_template
zhanymkanov/fastapi_production_template has 1,258 GitHub stars and 165 forks. GitHot measured 0 stars in 24 hours and -1 in 7 days. Last checked 2026-11-10 20:58 UTC. Last push 2026-03-19.
FastAPI Template with Docker, Postgres
Measured star growth
- in 24h
- 0
- in 7 days
- -1
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalFastAPI Template
This repo is kind of a template I use when starting up new FastAPI projects:
- easy local development
- environment with configured postgres
- script to lint code with
ruffandruff format
- SQLAlchemy with slightly configured
alembic- async SQLAlchemy engine
- pessimistic connection pooling configuration (link)
- migrations set in easy to sort format (
YYYY-MM-DD_slug) - migrations are formated with
ruff
- global pydantic model with
- explicit timezone setting during JSON export
- some configs for production
- gunicorn with dynamic workers configuration (stolen from @tiangolo)
- Dockerfile optimized for small size and fast builds with a non-root user
- JSON logs
- sentry for deployed envs
- and some other extras like global exceptions, sqlalchemy keys naming convention, shortcut scripts for alembic, etc.
Local Development
Setup just
MacOS:
brew install just
Debian/Ubuntu:
apt install just
Others: link
Setup poetry
pip install poetry
Other ways: link
Setup Postgres (16.3)
just up
Copy the environment file and install dependencies
cp .env.example .envpoetry install
Run the uvicorn server
With default settings:
just run
With extra configs (e.g. logging file)
just run --log-config logging.ini
Linters
Format the code with ruff --fix and ruff format
just lint
Migrations
- Create an automatic migration from changes in
src/database.py
just mm *migration_name*
- Run migrations
just migrate
- Downgrade migrations
just downgrade -1 # or -2 or base or hash of the migration
Deployment
Deployment is done with Docker and Gunicorn. The Dockerfile is optimized for small size and fast builds with a non-root user. The gunicorn configuration is set to use the number of workers based on the number of CPU cores.
Example of running the app with docker compose:
docker compose -f docker-compose.prod.yml up -d --build
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,762 starspublic-apis/public-apis
A collective list of free APIs
498,125 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
451,793 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,335 stars