# Build context is the repo root (see backend/Dockerfile). Keep the image lean # and secret-free: ship only the backend source + the two runtime data artifacts. # Secrets — never bake keys into the image (use Fly secrets / env vars instead) .env .env.* !.env.example # Frontend deploys separately (Vercel) frontend/ # Python / build cruft **/__pycache__/ **/*.py[cod] backend/.venv/ .venv/ *.egg-info/ .pytest_cache/ .ruff_cache/ # Heavy data NOT needed at runtime (offline ingestion inputs + eval outputs). # data/duckdb/, data/bm25_index.pkl, and data/qdrant/ (the embedded vector store) # are intentionally NOT ignored — the runtime needs them and the Dockerfile COPYs # them explicitly. data/raw/ data/processed/ data/*.json data/eval_results_*.json data/smoke_results.json # The embedded store's runtime lock — never bake it in; Qdrant recreates it. data/qdrant/.lock # Repo meta .git/ .github/ docs/ *.md PLAN.md infra/