# Dependencies
node_modules/
.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

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

# Next.js
.next/
out/
build/
dist/

# Turbo
.turbo/

# Environment
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
*.env.local

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

# Logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Testing
coverage/
.nyc_output/

# Misc
.cache/
tmp/
temp/

# Bio data — OASis 9-mer DB (~22 GB) and any other large reference files
# live here, mounted into the Docker container at runtime.
apps/api/data/

# Claude Code session scratch (transcripts, hooks, per-user settings).
# Agent instruction files (CLAUDE.md, AGENTS.md) stay tracked — they're
# project conventions, not personal state.
.claude/

# uv lockfile — unused here. apps/api deps are managed via requirements.txt
# (see run.sh + Dockerfile). pyproject.toml has no [project.dependencies],
# so `uv lock` just writes an empty stub. Ignore to prevent accidental commits.
apps/api/uv.lock
