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# recommended — no install needed
uvx fastapi-seed init my-project
# or install globally
pip install fastapi-seed
uv add fastapi-seedAnswer 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.
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
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
Dockerfile ← single stage (minimal) / multi-stage (advanced)
docker-compose.yml ← app + db service pre-wired
app/core/db.py ← SQLModel session + engine
tests/load/locustfile.py ← Locust hitting health endpoint
| 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() |
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 locustMIT
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
