# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
/lib/
/lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual Environment
.venv/
venv/
ENV/
env/

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

# Environment variables
.env
.env.local
.env.*.local
# Secret half of the two-file split. Repo carries .env.public + .env.secrets.example;
# .env.secrets lives only on the server (/etc/collieai/.env.secrets).
# Defense-in-depth: refuse to track such a file if anyone accidentally creates one.
.env.secrets
**/.env.secrets

# Database
*.db
*.sqlite3

# Logs
*.log
/logs/

# Testing
.pytest_cache/
.coverage
htmlcov/
.tox/

# Docker
docker-compose.override.yml

# ClickHouse data
clickhouse_data/
postgres_data/
redis_data/

# Trash folder
trash/

# Uploads (user-generated content — must never be committed)
app/uploads/
frontend/app/uploads/

# Frontend
node_modules/
frontend/node_modules/
frontend/dist/
# Vitest on-disk cache (can land under a root node_modules/.vite)
.vite/

# Node SDK is a published library — commit package.json only, not the lockfile
# (it pins the author's transitive deps, irrelevant to consumers). Path-specific
# so it never affects the tracked frontend/package-lock.json (an app needs it).
sdk/node/package-lock.json

# Playwright (E2E tests for the dashboard)
frontend/test-results/
frontend/playwright-report/
frontend/playwright/.cache/
