.gitignore
# Python backend/.venv/ **/__pycache__/ *.py[cod] .pytest_cache/ .ruff_cache/ # Local env files backend/.env frontend/.env # Run artifacts from local dev / verification. uvicorn and expo both split their # output across a .log and a .err, so ignoring only the .log half left an untracked # file behind after every local run. *.log *.err backend/backend-run.log frontend/expo*.log .playwright-mcp/ .serena/ verify-*.png frontend/test-results/ frontend/playwright-report/ # Row snapshots written by backend/scripts/apply_migrations.py before it touches # a live database. They contain real user UUIDs, so they are local evidence of a # migration run and must never be committed. backend/migration_backup_*.json # Browser profiles the real-push verification script reuses. They hold the push # subscriptions, which is why they are not deleted between runs; they are # machine-local state and must never be committed. One per browser, because a # subscription belongs to the browser that minted it. frontend/.push-probe-profile*/ # SQLite database the E2E harness creates. It is rebuilt from scratch on every # `bun run e2e:live`, holds no real user data, and must never be committed. # Globbed rather than listed one by one, because a harness run can be pointed at # a named scratch file (e2e-wns.db and friends) to keep concurrent runs from # trampling each other's rows. backend/e2e*.db backend/e2e*.db-journal backend/e2e*.db-wal backend/e2e*.db-shm # OS/editor noise .DS_Store Thumbs.db backend/.dispatch-secret