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

# Data directories (contain sensitive patient data)
data/
!frontend/src/data/
# Phase 3.A editorial sub-route — `/profile/data` is a Next.js App Router
# directory, not a data dump. Keep tracked.
# Plan: docs/plans/2026-04-25-settings-and-admin-redesign.md § Phase 3 / Task 3.A
!frontend/app/(authenticated)/profile/data/
uploads/
# User-accessible medical records (bind mount)
medical-records/
*.db
*.sqlite
*.sqlite3

# Private test files (contain real lab reports - never commit)
test samples/
design examples/

# Environment files
.env
.env.local
.env.*.local

# Secrets inventory (contains all API keys - NEVER commit)
SECRETS_INVENTORY.md

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# OS
.DS_Store
Thumbs.db

# Frontend
frontend/node_modules/
frontend/dist/
frontend/.vite/
frontend/coverage/

# Ignore legacy frontend directory in backend
backend/frontend/

# Testing
.coverage
.pytest_cache/
htmlcov/
# Playwright MCP screenshots (auto-generated)
.playwright-mcp/
backend/.playwright-mcp/

# Logs
*.log
logs/

# Docker
.dockerignore

# Temporary files
tmp/
temp/
*.tmp

# Backup files
*.bak
*.backup
*.old
.env.bak

# Sensitive files
*.key
*.pem
*.crt
encryption.key

# PDF test files (may contain PHI)
*.pdf
!docs/*.pdf  # Allow documentation PDFs
test_panel_tracking.py
.playwright-mcp/*.png
.vercel
.env*.local
Loinc/
.review/

# Source logo folders (assets already copied to frontend/public/assets/)
1.2-Strava-API-Logos/
Whoop Logo/
.env.vercel-check
.env.vercel-production
.serena/

# Garmin Developer Program (confidential)
Garmin Developer/
*.json
# Learn content source files MUST be tracked — they feed
# scripts/import_learn_content.mjs which generates
# frontend/src/data/generated/{learn-conditions,learn-symptoms}-data.ts.
# When these files are gitignored, the generated TS drifts from CI's
# checkout (CI sees fewer entries) and the verify_learn_sync.sh check
# fails. Discovered during Sprint 13 follow-up CI debt cleanup.
!knowledge-base/learn-content/**/*.json
# Test regression fixtures must be tracked — they pin pre-refactor outputs
# as the byte-for-byte regression net. Excluding them defeats the purpose
# of the snapshot test (newcomers regenerate the fixture against the
# refactored code, masking drift).
!backend/tests/**/fixtures/**/*.json
postgres.env

# Git worktrees for isolated development
.worktrees/
.claude/worktrees/
.claude/projects/
# Claude Code session artifacts (lock files, scheduled-task state, etc.)
.claude/*.lock

# Local screenshots, mockups, and email drafts
Concept2.png
concept2-card-*.png
integrations-section.png
report_redesign_mockup.html
email-feature-update.html
gevety_beta_update.html
concept2_result_db_id

# Local integration test data
Hevy/

# Licensed font download folder — the .otf files are copied into
# frontend/public/fonts/pp-editorial-new/ for actual use. Keeping the
# original download tree outside the repo avoids confusion.
PPEditorialNew-*/

# Phase 2+ preview / verification screenshots (regenerated on demand)
gevety-refresh-phase*.png
phase[0-9]*-*.png
rangeviz-*.png
vitals-refresh-*.png
cr[0-9]*-*.png
m[0-9]*-*.png
leftnav-*.png
qa-*.png
logout-*.png
mobile-*.png
sessions-*.png
admin-*.png
gevety-brand-assets*
docs/design/brand-assets/
