# FASTAPI.md
## STACK
REQUIRED
- Python 3.13+
- FastAPI
- Pydantic 2.x
- Uvicorn
OPTIONAL
- SQLAlchemy
- Alembic
- PostgreSQL
USE_DECLARED_STACK_ONLY
DO_NOT_INTRODUCE_NEW_LIBRARIES_UNLESS_EXPLICITLY_REQUESTED
---
## VERSION_POLICY
PYPROJECT_TOML_IS_SOURCE_OF_TRUTH
REQUIREMENTS_TXT_IS_FALLBACK
USE_DECLARED_VERSIONS_ONLY
DO_NOT_ASSUME_LIBRARY_VERSIONS
DO_NOT_GENERATE_DEPRECATED_PATTERNS
WHEN_VERSION_CONFLICT_EXISTS
FOLLOW_PROJECT_CONFIGURATION
---
## PROJECT_STRUCTURE
```text
app/
├── api/
├── schemas/
├── dependencies/
├── core/
└── main.py
tests/
pyproject.toml
```
THIS_STRUCTURE_IS_AUTHORITATIVE
DO_NOT_CREATE_SRC_DIRECTORY
DO_NOT_CREATE_SERVICES_DIRECTORY
DO_NOT_CREATE_REPOSITORIES_DIRECTORY
DO_NOT_CREATE_CONTROLLERS_DIRECTORY
DO_NOT_CREATE_ADDITIONAL_TOP_LEVEL_DIRECTORIES
PREFER_EXISTING_DIRECTORIES_OVER_NEW_ONES
---
## FILE_PLACEMENT
api_routes -> app/api
request_schemas -> app/schemas
response_schemas -> app/schemas
shared_dependencies -> app/dependencies
application_configuration -> app/core
application_entry -> app/main.py
tests -> tests
---
## API_RULES
USE_APIRouter
GROUP_RELATED_ENDPOINTS
KEEP_ROUTE_MODULES_SMALL
KEEP_ENDPOINTS_FOCUSED
FOLLOW_FASTAPI_CONVENTIONS
ROUTES_BELONG_IN_APP_API
---
## SCHEMA_RULES
USE_PYDANTIC_MODELS
REQUEST_MODELS_ARE_REQUIRED
RESPONSE_MODELS_ARE_REQUIRED
SEPARATE_REQUEST_AND_RESPONSE_MODELS_WHEN_NEEDED
DO_NOT_USE_RAW_DICTIONARIES_FOR_PUBLIC_APIS
---
## DEPENDENCY_RULES
USE_FASTAPI_DEPENDENCY_INJECTION
SHARED_DEPENDENCIES_BELONG_IN_APP_DEPENDENCIES
AVOID_GLOBAL_STATE
PREFER_EXPLICIT_DEPENDENCIES
---
## CONFIGURATION_RULES
APPLICATION_CONFIGURATION_BELONGS_IN_APP_CORE
USE_ENVIRONMENT_VARIABLES_FOR_CONFIGURATION
DO_NOT_HARDCODE_SECRETS
DO_NOT_HARDCODE_CREDENTIALS
DO_NOT_HARDCODE_API_KEYS
---
## DATABASE_RULES
DATABASE_INTEGRATION_IS_OPTIONAL
DO_NOT_ASSUME_DATABASE_USAGE
DO_NOT_ASSUME_DATABASE_ENGINE
FOLLOW_DECLARED_PROJECT_DEPENDENCIES
---
## TESTING_RULES
TESTS_BELONG_IN_TESTS_DIRECTORY
USE_PYTEST
TEST_API_ENDPOINTS
TEST_CORE_BUSINESS_BEHAVIOR
---
## ARCHITECTURE_RULES
DO_NOT_CREATE_SERVICES_DIRECTORY
DO_NOT_CREATE_REPOSITORIES_DIRECTORY
DO_NOT_CREATE_CUSTOM_ARCHITECTURE
DO_NOT_INTRODUCE_PATTERNS_NOT_DEFINED_IN_ARCHITECTURE_MD
DO_NOT_CREATE_ABSTRACTIONS_WITHOUT_JUSTIFICATION
PREFER_SIMPLE_OVER_COMPLEX
---
## FORBIDDEN_DIRECTORIES
- src
- services
- repositories
- controllers
DO_NOT_CREATE_FORBIDDEN_DIRECTORIES
UNLESS_EXPLICITLY_REQUESTED
---
## ROOT_DIRECTORY_POLICY
ALLOWED_ROOT_DIRECTORIES
- app
- tests
ALLOWED_ROOT_FILES
- pyproject.toml
- README.md
- .env.example
DO_NOT_CREATE_UNDEFINED_ROOT_DIRECTORIES
---
## GENERATION_POLICY
BEFORE_CREATING_ANY_FILE
1. CHECK_EXISTING_STRUCTURE
2. CHECK_EXISTING_PATTERNS
3. REUSE_BEFORE_CREATING
PREFER_MODIFICATION_OVER_CREATION
DO_NOT_INVENT_ARCHITECTURE
DO_NOT_DUPLICATE_EXISTING_FUNCTIONALITY
PYPROJECT_TOML_OVERRIDES_VERSION_ASSUMPTIONS
WHEN_UNCERTAIN
FOLLOW_EXISTING_CODEBASE
DO_NOT_GUESS
---
## FASTAPI_PRINCIPLES
LATEST_STABLE_ONLY
NEW_PROJECTS_ONLY
API_FIRST
MINIMAL_STRUCTURE
SCHEMAS_ARE_REQUIRED
DEPENDENCY_INJECTION_OVER_GLOBAL_STATE
NO_ARCHITECTURAL_GUESSING
REUSE_BEFORE_CREATING
KEEP_IT_SIMPLE Document
FASTAPI.md
ReplWorks에서 제공하는 FASTAPI.md framework 파일