ADR 0004: Project Directory Structure
Status
Accepted
Context
A clean, scalable, and maintainable project directory structure is required for our flagship API to emulate production standards.
Decision
Adopt a modular or layered architecture layout for the source code:
src/
├── main.py # App entrypoint & lifespans
├── config.py # Settings and environment config
├── database.py # SQLAlchemy session & engine setup
├── models/ # SQLAlchemy database models
├── schemas/ # Pydantic schemas (requests/responses)
├── routers/ # FastAPI routers (endpoints)
├── services/ # Business logic and database operations
└── core/ # Security, dependencies, middleware
Consequences & Trade-offs
- Pros: Distinct separation of concerns (validation, business logic, routing, persistence). Highly readable for interviewers.
- Cons: Slightly more boilerplate files to create compared to a single-file API.