# Git
# NOTE: .git is intentionally NOT excluded — the gitinfo build stage in
# Dockerfile.openldap reads it to bake the commit hash into the image (see
# nodejs/utils/build_info.js), then it's discarded before the final stage.
# It never ends up in the final image.
.gitignore

# Development
.claude
*.md
# README.md and tos.md are both read at runtime (tos.md is loaded by
# routes/index.js at boot). DEPLOYMENT.md/API.md/directory_spec.md/docs/*.md
# are read at runtime too, by routes/docs.js -- all must stay in the build
# context.
!README.md
!tos.md
!CHANGELOG.md
!DEPLOYMENT.md
!API.md
!directory_spec.md
!docs/**/*.md

# Tests (excluded from production builds; test-runner Dockerfile copies them explicitly)
# nodejs/tests/
# nodejs/*.test.js

# Host dependency tree — let the image run a clean `npm ci`. Also avoids
# copying platform-wrong native modules (e.g. bcrypt built for the host OS).
nodejs/node_modules

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

# Logs
*.log
logs/

# OS
.DS_Store
Thumbs.db

# Docker (prevent recursive copy)
Dockerfile*
docker-compose.yml
.dockerignore

# Ops scripts (not needed in container) — except the custom LDAP schema files,
# which Dockerfile.openldap COPYs into the image for the bundled slapd.
ops/
!ops/schema/
!ops/schema/*.schema

# Secrets (mount at runtime instead)
nodejs/conf/secrets.js
secrets.js
