fastapi-basekit
Construye APIs FastAPI listas para producción en minutos — repos, services, controllers, paginación, JWT y migrations ya resueltos. Multi-ORM (SQLAlchemy · SQLModel · Beanie).
¿Por qué fastapi-basekit?
Cada proyecto FastAPI repite lo mismo: paginación, filtros, búsqueda, soft delete, JWT middleware, exception handlers, alembic env. basekit lo trae resuelto en clases base que extiendes.
-
Inicio en minutos
basekit initgenera proyecto completo:app/, alembic, docker-compose, Makefile, JWT, seed admin. Listo en 1 comando. -
Multi-ORM
SQLAlchemy 2.0 async, SQLModel y Beanie (MongoDB) con la misma API:
Repository+Service+Controller. -
Auth incluido
JWT middleware,
BasePermissionclasses async,request.state.userresuelto una vez por request. -
Filtros + paginación
?page=1&count=10&search=foo&order_by=-created_atlisto en cada controller, sin escribir SQL. -
Convenciones probadas
Patrón usado en producción en
axion_accounter,pulbot,fluxio,swapdealer. Battle-tested. -
Plugin Claude Code
La skill
fastapi-basekit-crudenseña el patrón a Claude para que scaffolde recursos automáticamente.
Quickstart
pip install fastapi-basekit[init]
basekit init # cookiecutter prompts
cd <project_slug>
cp .env.example .env
make up-d
make migrate-create && make migrate-up
make seed
Visita http://localhost:8000/docs y entra con admin@example.com / ChangeMe2026!.
Arquitectura
flowchart LR
R[Request] --> M[AuthenticationMiddleware]
M --> C[@cbv Controller]
C --> S[BaseService]
S --> Repo[BaseRepository]
Repo --> DB[(Database)]
DB -.-> Repo
Repo -.-> S
S -.-> C
C --> F[format_response]
F --> Resp[BaseResponse]
style C fill:#009485,color:#fff
style S fill:#00b89c,color:#fff
style Repo fill:#00d4b8,color:#003a35
| Capa | Responsabilidad | Hooks útiles |
|---|---|---|
| Controller | Validar params, permisos, schema response | get_schema_class(), check_permissions() |
| Service | Lógica de negocio, scoping | get_filters(), get_kwargs_query() |
| Repository | Queries, soft-delete filter | build_list_queryset() |