- schema.ts: export localCredentials = mysqlTable('local_credentials', {...})
- user_id FK->users(cascade), username, password_hash, createdAt, updatedAt
- UNIQUE(user_id), UNIQUE(username), INDEX(user_id)
- 0003_warm_deathstrike.sql: purely additive CREATE TABLE (no ALTER/DROP/TRUNCATE on existing tables)
- Applied to dev DB: pnpm --filter @familysync/api db:migrate exits 0
- test/setup.ts: add localCredentials to afterEach delete cleanup (FK-safe ordering)
- generate-secrets.mjs: emit LOCAL_SESSION_SECRET (base64 32-byte, >=32 chars, D-05)
- .dockerignore: add apps/api/scripts/ exclusion (D-15/IMG-02) — entire break-glass dir excluded
61 lines
1.5 KiB
Plaintext
61 lines
1.5 KiB
Plaintext
# === Secrets and credentials (NEVER in build context) ===
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
# Phase 19 (D-15 / IMG-02): exclude the entire break-glass scripts directory so
|
|
# reset-admin.ts and any future dev-only scripts never ship in the production image.
|
|
apps/api/scripts/
|
|
|
|
# === VCS (large and unnecessary) ===
|
|
.git
|
|
.gitignore
|
|
|
|
# === Build artifacts (regenerated in-build) ===
|
|
**/dist/
|
|
**/.dist/
|
|
|
|
# === Dependencies (reinstalled in-build) ===
|
|
**/node_modules/
|
|
|
|
# === Tests (not needed in build; keep out of prod) ===
|
|
apps/api/tests/
|
|
apps/api/test/
|
|
apps/pwa/e2e/
|
|
|
|
# === Playwright artifacts ===
|
|
apps/pwa/test-results/
|
|
apps/pwa/playwright-report/
|
|
apps/pwa/blob-report/
|
|
.playwright/
|
|
.playwright-cli/
|
|
|
|
# === Planning / docs / dev tooling ===
|
|
.planning/
|
|
docs/
|
|
graphify-out/
|
|
.venv/
|
|
|
|
# === Editor / OS ===
|
|
.vscode/
|
|
.idea/
|
|
.DS_Store
|
|
|
|
# === CI / dev config files (not needed in image) ===
|
|
.gitea/
|
|
.markdownlint-cli2.jsonc
|
|
.prettierignore
|
|
.prettierrc
|
|
eslint.config.js
|
|
|
|
# === SQL dumps (if any) ===
|
|
*.sql.dump
|
|
*.sql.gz
|
|
|
|
# NOTE: apps/api/src/db/migrations/*.sql are included in the build context
|
|
# because the builder stage's `COPY apps/api ./apps/api` needs them.
|
|
# However, migrations are applied at runtime (drizzle-kit migrate), not
|
|
# baked into the image — they travel with the app source in builder stage only.
|
|
# The production stage does NOT copy apps/api/src directly; it only copies
|
|
# apps/api/dist (via --from=builder) and apps/api/package.json.
|
|
# So migration .sql files in src/db/migrations/ never reach the production image.
|