# Python
__pycache__/
*.py[cod]
*$py.class
*.egg-info/
.pytest_cache/
.mypy_cache/
.ruff_cache/

# Virtual environments
venv/
.venv/
env/

# Secrets / local config
.env
.env.*
!.env.example

# SQLite runtime
*.sqlite
*.sqlite3
*.db
*.db-journal
*.db-wal
*.db-shm

# Runtime data (DB + media uploads live here in prod).
# Ignore everything inside data/ except the .gitkeep markers; negating a
# path whose *directory* is ignored does not work, so we ignore the
# contents with a trailing glob instead.
data/*
!data/.gitkeep
!data/media/
data/media/*
!data/media/.gitkeep

# Editors / IDE
.vscode/
.idea/
*.swp
*.swo
.DS_Store

# Build / Docker
build/
dist/
*.log
