How fastapi-practices/fastapi-best-architecture works
FastAPI Best Architecture is an enterprise backend framework organized in API, schema, service, CRUD, and model layers. Its main user workflow is an administrator request entering the application router, passing through an API endpoint and business service to persistent data, then returning a response. The repository also provides authentication and access control, task scheduling and results, plugin-based capabilities, and shared runtime infrastructure. Layer relationships follow the README’s documented architecture; several feature branches are visible in the tree but were not sampled, so their internal wiring is not asserted.
Main entry points: router.py Application router · auth_service.py Authentication service · admin/api Admin APIs · task/api Task APIs
Components 26
Request and administration
- Application router
backend/app/router.py - Admin APIs
backend/app/admin/api - Authentication API
backend/app/admin/api/v1/auth - Authentication service
backend/app/admin/service/auth_service.py - Access control
backend/common/security - Admin services
backend/app/admin/service - Admin CRUD
backend/app/admin/crud - Admin models
backend/app/admin/model
Task execution
- Task APIs
backend/app/task/api - Scheduler service
backend/app/task/service/scheduler_service.py - Scheduler CRUD
backend/app/task/crud/crud_scheduler.py - Scheduler model
backend/app/task/model/scheduler.py - Celery workers
backend/app/task/celery.py - Task actions
backend/app/task/actions.py - Result API
backend/app/task/api/v1/result.py - Result service
backend/app/task/service/result_service.py
Plugins and extensions
- Plugin router
backend/plugin/router.py - Plugin capabilities
backend/plugin - Code generator
backend/plugin/code_generator/service/code_gen_service.py - Social login
backend/plugin/oauth2
Shared runtime
- SQL database
- Redis
backend/database/redis.py - Live connections
backend/common/socketio/server.py - Request middleware
backend/middleware - Service startup
backend/main.py
Other components
- Administrator
Connections 28
- Administrator → Application router: sends request
- Application router → Admin APIs: routes requests
- Admin APIs → Authentication API: routes login
- Authentication API → Authentication service: invokes login
- Authentication service → Access control: creates tokens
- Authentication service → Admin CRUD: reads user/menu
- Admin APIs → Admin services: invokes services
- Admin services → Admin CRUD: uses data access
- Admin CRUD → Admin models: queries models
- Admin models → SQL database: persists data
- Application router → Task APIs: routes requests
- Task APIs → Scheduler service: manages schedules
- Scheduler service → Scheduler CRUD: reads/writes schedules
- Scheduler CRUD → Scheduler model: queries models
- Scheduler service → Celery workers: dispatches task
- Celery workers → Task actions: executes tasks
- Task APIs → Result API: routes result requests
- Result API → Result service: retrieves results
- Application router → Plugin router: includes extensions
- Plugin router → Plugin capabilities: injects routes
- Plugin capabilities → Code generator: includes capability
- Plugin capabilities → Social login: includes capability
- Social login → Redis: uses state storage
- Authentication service → Redis: uses token storage
- Live connections → Access control: validates tokens
- Live connections → Redis: tracks sessions
- Service startup → Application router: registers application
- Application router → Request middleware: processes requests