# The build stage does `COPY . .`, so anything not excluded here ends up in an
# image layer — and a layer is readable by anyone who can pull the image, even
# if a later stage deletes the file.

# ---- Secrets. Non-negotiable. ----
# The platform injects the environment; a baked .env would ship live database
# and Spaces credentials inside the image.
.env
.env.*
!.env.example

# ---- Build inputs that must be produced inside the image ----
# A host node_modules is the wrong platform (linux/musl vs win32/darwin) and
# would silently shadow the one `pnpm install` builds in the deps stage.
node_modules
**/node_modules
.next
**/.next
.turbo
**/.turbo
dist
**/dist
out
**/out

# ---- Never needed at runtime ----
.git
.gitignore
.github
.vscode
.idea
**/test
**/tests
**/*.test.ts
**/*.test.tsx
**/vitest.config.ts
playwright-report
test-results
coverage
**/*.log
.DS_Store
Thumbs.db

# Docs and local tooling. Keeping them out is about layer size and churn: a
# README edit should not invalidate the build cache.
*.md
!README.md
docker-compose.yml
docker-compose.*.yml
Dockerfile
.dockerignore

# NOTE: ca-certificate.crt is deliberately NOT ignored. DATABASE_CA_CERT may
# point at it, and it is a public certificate — no private key. See db/client.ts.
