# ── Dependencies ─────────────────────────────────────
/node_modules
/.pnp
.pnp.*

# Yarn (keep patches/plugins/releases)
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# ── Next.js ──────────────────────────────────────────
/.next/
/out/
/build
next-env.d.ts

# ── TypeScript ────────────────────────────────────────
*.tsbuildinfo

# ── Testing & Coverage ───────────────────────────────
/coverage
/test-results/
/playwright-report/

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

# ── Environment ──────────────────────────────────────
.env*
!.env.local.example

# ── OS & Editor ──────────────────────────────────────
.DS_Store
Thumbs.db
*.pem
.vscode/settings.json
.idea/

# ── Agent & Dev Tools ────────────────────────────────
.agent/
.Jules/
.jules/
.claude/

# Agent instructions — local working notes, not part of the published project.
# Both are generated by next.config.ts on `next dev`, so an untracked one shows
# up as noise in `git status` after every start.
AGENTS.md
CLAUDE.md
.planning/

# ── One-off Scripts (Root) ───────────────────────────
/check_albums.js
/check_albums.ts
/git-filter-repo

# ── Deployment ───────────────────────────────────────
.vercel
docker-compose.override.yml

# ── User Content (personal gallery config) ───────────
content/settings.yaml
content/gallery.yaml
content/about.md
content/privacy.md
# Journal entries reference Immich asset UUIDs, which are specific to one
# server — committing an entry would publish ids from the author's instance.
# The .example alongside them stays tracked as a starting point.
content/journal/*.md
content/essays/*.md
# Von der App zur Laufzeit geschrieben: yaml-service legt bis zu 10 Backups je
# Datei ab, und die Backups von gallery.yaml/settings.yaml wuerden genau den
# Inhalt ins Repo tragen, den die drei Zeilen darueber heraushalten sollen.
content/.backups/
# yaml-service writes next to the file it backs up, so the journal directory
# gets its own .backups/ — the top-level pattern above does not reach it.
content/**/.backups/
content/analytics.json
content/proofing.json
content/*.screenshot-bak
# Credentials written by the /install wizard (never committed)
content/install.json
# One-time setup token, written on first access and removed once install completes
content/.setup-token
# Contact form messages (lib/contact.ts), personal data of visitors
content/messages/
# Google Fonts cached by /api/fonts (lib/fonts.ts)
content/.fonts/

# ── Internal Dev Docs ────────────────────────────────
docs/dev/
docs/ideas.md
/design_handoff_*/