FastAPI-fastkit: Fast, easy-to-use starter kit for new users of Python and FastAPI
This project was created to speed up the configuration of the development environment needed to develop Python-based web apps for new users of Python and FastAPI.
This project was inspired by the SpringBoot initializer & Python Django's django-admin CLI operation.
Key Features
- ⚡ Immediate FastAPI project creation : Super-fast FastAPI workspace & project creation via CLI, inspired by
django-adminfeature of Python Django - ✨ Interactive project builder: Guided step-by-step feature selection for databases, authentication, caching, monitoring, and more with auto-generated code
- 🎨 Prettier CLI output : Beautiful CLI experience powered by rich library
- 📋 Standards-based FastAPI project templates : Templates follow Python standards and common FastAPI patterns.
- 🔍 Automated template quality assurance : Weekly automated testing ensures all templates remain functional and up-to-date
- 🚀 Multiple project templates : Choose from various pre-configured templates for different use cases (async CRUD, Docker, PostgreSQL, etc.)
- 📦 Multiple package manager support : Choose your preferred Python package manager (pip, uv, pdm, poetry) for dependency management
- 🧾 Reproducible project configs : Save an interactive session to a
.json/.toml/.yamlfile and replay it withfastkit init --config - 🏷️ Self-describing projects : Every generated project records its template, preset, package manager, entrypoint and selected features in a
[tool.fastapi-fastkit]block thatrunserverandaddrouteread back
Installation
Install FastAPI-fastkit in your Python environment.
$ pip install FastAPI-fastkit
Usage
- Global options
--help: Show help--version: Show version--debug/--no-debug: Toggle debug mode
Create a new FastAPI project
fastkit init [OPTIONS]
[!TIP] Scaffolds an empty FastAPI project, creates a virtual environment, installs dependencies
- Key options:
--project-name,--author,--author-email,--description--package-manager[pip|uv|pdm|poetry]--config <path>: create the project from a saved config file (.json/.toml, and.yamlwhen PyYAML is installed) with no prompts--save-config <path>: with--interactive, record the answers for later reuse--dry-run: print the files and packages that would be created, write nothing--no-venv: skip virtual environment creation (implies--no-install)--no-install: skip dependency installation--yes/-y: skip the "Overwrite these files?" confirmation when deploying in place- Stack selection:
minimal|standard|full(interactive)
Create a project with interactive mode
fastkit init --interactive
[!TIP] Guided step-by-step project setup with intelligent feature selection
- Features:
- Architecture preset:
minimal|single-module|classic-layered|domain-starter(default) - Database selection: PostgreSQL, MySQL, MongoDB, Redis, SQLite
- Authentication: JWT, OAuth2, FastAPI-Users, Session-based
- Background tasks: Celery, Dramatiq
- Caching: Redis, fastapi-cache2
- Monitoring: Loguru, OpenTelemetry, Prometheus
- Testing: Basic (pytest), Coverage, Advanced (with faker, factory-boy)
- Utilities: CORS, Rate-Limiting, Pagination, WebSocket
- Logging: structured JSON logging with a request-id middleware
- Migrations: Alembic (async env, baseline revision)
- Tooling: ruff, pre-commit, GitHub Actions, devcontainer, Makefile (multi-select)
- Deployment: Docker, docker-compose with auto-generated configs
- Package manager: pip, uv, pdm, poetry
- Custom packages: Add your own dependencies
- Architecture preset:
- Auto-generates (varies by preset - see the matrix for details):
main.pyregenerated from selected features forminimal/single-module; preserved as-shipped forclassic-layered/domain-starter- Database and authentication configuration files at preset-specific paths
- Docker deployment files (
Dockerfile,docker-compose.yml) with the preset's correct uvicorn entrypoint - Test configuration (pytest with coverage)
/healthand/readyendpoints on every generated project- Real working code — not just installed packages — for background tasks, caching, WebSocket, pagination, OpenTelemetry, OAuth2 and session-based auth
--dry-runpreviews the exact file tree a run would create, including logging/migrations/tooling artifacts
Create a project from a template
fastkit startdemo [TEMPLATE] [OPTIONS]
[!TIP] Creates a project from a template (e.g.,
fastapi-default) and installs dependencies
- Key options:
--project-name,--author,--author-email,--description--package-manager[pip|uv|pdm|poetry]--dry-run,--no-venv,--no-install,--yes/-y— same meaning as oninit- Refuses to run if the target project directory already exists (
--dry-runexcepted)
- Tip: List available templates with
fastkit list-templates
Add a new route
fastkit addroute <project_name> <route_name>
- What it does: Adds a new API route to the specified project
Run the development server
fastkit runserver [OPTIONS]
- What it does: Starts the uvicorn development server
- Key options:
--host,--port,--reload/--no-reload,--workers
List templates
fastkit list-templates
Available templates:
| Template | Description | Notes |
|---|---|---|
fastapi-default |
Simple FastAPI project with a classic layered layout | Good first choice |
fastapi-empty |
Minimal FastAPI template | Base for minimal preset |
fastapi-single-module |
Single-file FastAPI app | Base for single-module preset |
fastapi-domain-starter |
Domain-oriented, pyproject-first starter for medium-sized APIs | Base for domain-starter preset |
fastapi-auth-jwt |
JWT authentication with refresh-token rotation, argon2 hashing and scopes | New in v1.4.0 |
fastapi-sqlmodel |
Async SQLModel + Alembic migrations + generic CRUD with pagination | New in v1.4.0 |
fastapi-llm-agent |
Streaming Claude chat agent (SSE) with a tool-call loop | New in v1.4.0 |
fastapi-mcp |
FastAPI app exposed as an MCP server | |
fastapi-psql-orm |
Item management API with PostgreSQL, SQLModel, Alembic and docker-compose | Requires Docker |
fastapi-custom-response |
Item management API with a custom response envelope, error handling and pagination | |
fastapi-async-crud |
Async item management API | Deprecated — use fastapi-sqlmodel |
fastapi-dockerized |
Dockerized item management API | Deprecated — use fastapi-default with the Docker option in init --interactive |
Deprecated templates still work but are no longer recommended starting points. See Which starter should I choose? for a decision guide.
Delete a project
fastkit deleteproject <project_name>
Documentation
For comprehensive guides and detailed usage instructions, visit our documentation:
- 🧭 Which starter should I choose? - Beginner decision guide for
startdemotemplates and interactive presets - 📚 User Guide - Detailed installation and usage guides
- 🎯 Tutorial - Step-by-step tutorials for beginners
- 📖 CLI Reference - Complete command reference
- 🧱 Architecture Preset Matrix - Per-preset / per-feature contract for interactive generation
- 🔍 Template Quality Assurance - Automated testing and quality standards
Contributing
We welcome contributions from the community! FastAPI-fastkit is designed to help newcomers to Python and FastAPI, and your contributions can make a significant impact.
Contributing Guide
Quick Start for Contributors
-
Fork and clone the repository:
git clone https://github.com/bnbong/FastAPI-fastkit.git cd FastAPI-fastkit
-
Set up development environment:
make dev-setup # Sets up everything you need
-
Run development checks:
make dev-check # Format, lint, and test
What You Can Contribute
- 🚀 New FastAPI templates - Add templates for different use cases
- 🐛 Bug fixes - Help us improve stability and reliability
- 📚 Documentation - Improve guides, examples, and translations
- 🧪 Tests - Increase test coverage and add integration tests
- 💡 Features - Suggest and implement new CLI features
Contribution Guidelines
For detailed contribution guidelines, development setup, and project standards, please refer to:
- CONTRIBUTING.md - Comprehensive contribution guide
- CODE_OF_CONDUCT.md - Project principles and community standards
- SECURITY.md - Security guidelines and reporting
Significance of FastAPI-fastkit
FastAPI-fastkit aims to provide a fast and easy-to-use starter kit for new users of Python and FastAPI.
This idea was initiated with the aim of helping FastAPI newcomers learn from the beginning, which aligns with the production significance of the FastAPI CLI package added with the FastAPI 0.111.0 version update.
As someone who has been using and loving FastAPI for a long time, I wanted to develop a project that could help fulfill the wonderful motivation that FastAPI developer tiangolo has expressed.
FastAPI-fastkit bridges the gap between getting started and building production-ready applications by providing:
- Immediate productivity for newcomers who might be overwhelmed by setup complexity
- Best practices built into every template, helping users learn proper FastAPI patterns
- Scalable foundations that grow with users as they advance from beginners to experts
- Community-driven templates that reflect real-world FastAPI usage patterns
License
This project is licensed under the MIT License - see the LICENSE file for details.
Release files for FastAPI-fastkit 1.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fastapi_fastkit-1.4.1.tar.gz | 355.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastapi_fastkit-1.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 768.4 kB
Release files / fastapi_fastkit-1.4.1.tar.gz
| Download URL | fastapi_fastkit-1.4.1.tar.gz |
|---|---|
| Size | 355.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a95b21f451680012f045ee93a36293477187c0eaf62afff5938bb4a8d782dcbe
|
|
BLAKE2b-256 checksum How to use checksums |
6b11903c07e44ecddfb8ebd704016a4ac3ca12bc45598060c6da178c908cf5cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.
Transparency logRelease files / fastapi_fastkit-1.4.1-py3-none-any.whl
| Download URL | fastapi_fastkit-1.4.1-py3-none-any.whl |
|---|---|
| Size | 412.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2201d43d6c56feefa4916498cd2848d7743a134bde1ed9373a3f0315c256935a
|
|
BLAKE2b-256 checksum How to use checksums |
3b9dfd18671d525844c5f85d1dafe390d7b1cf22e2e3aa5bbac780b2b800e34b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.
Transparency log