A CLI scaffold tool for FastAPI projects.
Stop copy-pasting project structures. One command, few questions
and your FastAPI project is scaffolded, installed, and ready to run.
No tutorial bloat. No manual setup. Just open your editor and start building.
uvx fastapi-seed init my-project # scaffold into new folder
uvx fastapi-seed init . # scaffold into current folder
Install
# recommended — no install needed
uvx fastapi-seed init my-project
# or install globally
pip install fastapi-seed
uv add fastapi-seed
What you get
Answer 5 questions:
1. Project name?
2. Setup type? Minimal / Advanced
3. Set up Docker? Yes / No
4. Which database? PostgreSQL / SQLite / None (only if Docker = Yes)
5. Load testing? Yes / No
A fully structured project is generated and dependencies are installed automatically via uv sync.
Always included
my-project/
├── app/
│ ├── main.py ← clean, minimal (~15 lines)
│ ├── routers/health.py ← health check endpoint
│ ├── schemas/
│ ├── services/
│ └── core/
├── tests/test_main.py
├── .env + .env.example
├── Makefile
├── pyproject.toml ← ruff + pytest configured
└── README.md
Advanced setup adds
app/core/config.py ← pydantic-settings config
app/core/logger.py ← structured logging
.github/workflows/ci.yml ← ruff + pytest on every PR
.pre-commit-config.yaml ← ruff runs before every commit
Docker + database adds
Dockerfile ← single stage (minimal) / multi-stage (advanced)
docker-compose.yml ← app + db service pre-wired
app/core/db.py ← SQLModel session + engine
Load testing adds
tests/load/locustfile.py ← Locust hitting health endpoint
Why fastapi-seed?
| fastapi-seed | others | |
|---|---|---|
| Package manager | uv |
pip |
| main.py | 15 lines, clean | 100+ lines of tutorial code |
| Load testing | ✓ Locust included | ✗ |
| Complexity levels | Minimal / Advanced | one size fits all |
| Docker + DB | pre-wired, just works | manual setup |
| CI/CD | GitHub Actions included | ✗ |
| Interactive UX | arrow-key prompts (like Vite) | basic input() |
Generated project commands
make dev # uv run uvicorn app.main:app --reload
make test # uv run pytest
make lint # uv run ruff check .
make format # uv run ruff format .
make docker-up # docker compose up --build
make load-test # uv run locust
License
MIT
Changelog
[0.1.7] - 2026-03-16
Fixed
uvnot installed now shows a clear error with install link instead of a crash (FileNotFoundErroron Windows)gitnot installed now shows a clear error with install link instead of a crash- Pressing
Ctrl+Cat any prompt now exits cleanly instead of throwingAttributeError: 'NoneType'
Changed
- Python support expanded from
>=3.13to>=3.11— works on 3.11, 3.12, and 3.13
Added
--version/-vflag —fastapi-seed --versionnow prints the current version and exits
[0.1.5] - initial release
Metadata
Release files for fastapi-seed 0.1.7
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_seed-0.1.7.tar.gz | 14.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastapi_seed-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.1 kB
Release files / fastapi_seed-0.1.7.tar.gz
| Download URL | fastapi_seed-0.1.7.tar.gz |
|---|---|
| Size | 14.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
85186b3e5d7f83088e4f2766f13a3826b61c47c01ea03378f92f7c1de0edac16
|
|
BLAKE2b-256 checksum How to use checksums |
ff690bf44606f972ada13a1f3733646e23fef49ee31ba7be4d39dd51dba2b9b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / fastapi_seed-0.1.7-py3-none-any.whl
| Download URL | fastapi_seed-0.1.7-py3-none-any.whl |
|---|---|
| Size | 18.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
99ad4b3b826271daa3685e6467a03d36218c2ff280f16fdd08106020bd89f672
|
|
BLAKE2b-256 checksum How to use checksums |
7dd8776a89f674c36d1cb2d4dbfb8c62473e1e424f638235c4b3d9d99713ab4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|