chore: add application package scaffold and tooling ignores

Add the initial src/ package (empty FastAPI entrypoint, Settings stub),
an .env.example placeholder, and expand .gitignore for test/coverage
artifacts, environment files, and local Claude Code overrides. Also
documents the Alembic async bootstrap command in ADR-0009.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-15 11:26:15 +03:30
parent 3d3631c620
commit 8c062ae461
5 changed files with 22 additions and 2 deletions

0
.env.example Normal file
View File

13
.gitignore vendored
View File

@@ -9,5 +9,16 @@ wheels/
# Virtual environments # Virtual environments
.venv .venv
# Enviroment variables # Test and coverage artifacts
.pytest_cache/
.coverage
coverage.xml
htmlcov/
# Environment variables
.env .env
.env.langfuse
infra/langfuse/.env
# Claude Code local overrides
.claude/settings.local.json

View File

@@ -58,7 +58,11 @@ Conventions:
- Use SQLAlchemy async sessions in FastAPI (`AsyncSession`) and one session per - Use SQLAlchemy async sessions in FastAPI (`AsyncSession`) and one session per
request/job unit of work. request/job unit of work.
- Use Alembic for all DDL. FastAPI startup opens connections and checks - Use Alembic for all DDL. Bootstrap the migration environment once with
`uv run alembic init -t async alembic`, then commit the generated
`alembic.ini`, `alembic/env.py`, and `alembic/versions/` directory. Retain the
async Alembic template and configure it to load the application's database URL
and SQLAlchemy model metadata. FastAPI startup opens connections and checks
readiness; it does not create or alter tables. readiness; it does not create or alter tables.
- Prefer UUID primary keys generated by the application. Avoid integer IDs that - Prefer UUID primary keys generated by the application. Avoid integer IDs that
leak tenant size and make distributed workers harder to compose. leak tenant size and make distributed workers harder to compose.

5
src/config.py Normal file
View File

@@ -0,0 +1,5 @@
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
pass

0
src/main.py Normal file
View File