Backend-agnostic disaster-recovery backup engine that runs on the current storage backend (no storage cutover required): - Full-bundle export: db.dump (pg_dump custom) + every storage blob + manifest.json with per-object SHA-256, streamed as a tar. Entry points: admin UI download, GET /api/v1/admin/backup/export, scripts/create-full-backup.ts. - Admin-configurable push destinations (backup_destinations table, migration 0091): SFTP/SSH, S3-compatible (reuses the minio client), and mounted path/NAS behind one transport interface (test/push/prune). Secrets AES-GCM at rest; API returns only *IsSet markers. - Opt-in per-destination AES-256 bundle encryption (scrypt KDF, streamed) + scripts/decrypt-backup.ts for restore. - Wired the previously-dead database-backup cron to runScheduledBackupPush (push to enabled destinations, prune to retention, alert super-admins on failure). Tests: 1608 unit/integration pass; tsc + lint clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
71 lines
1.4 KiB
Plaintext
71 lines
1.4 KiB
Plaintext
node_modules/
|
|
.next/
|
|
.nuxt/
|
|
.worktrees/
|
|
.env
|
|
.env.local
|
|
.env.production
|
|
*.pem
|
|
*.key
|
|
drizzle/*.sql
|
|
coverage/
|
|
.turbo/
|
|
out/
|
|
dist/
|
|
test-results/
|
|
playwright-report/
|
|
nginx/certs/
|
|
tsconfig.tsbuildinfo
|
|
.playwright-mcp/
|
|
docker-compose.override.yml
|
|
.remember/
|
|
.DS_Store
|
|
# Root-only ad-hoc EOI scratch dir; routes under src/app/.../eoi/ must NOT match.
|
|
/eoi/
|
|
|
|
# Brainstorming companion mockup files
|
|
.superpowers/
|
|
|
|
# Ad-hoc screenshots / scratch artifacts at repo root
|
|
/*.png
|
|
/*.jpg
|
|
# Local-only dashboard widget-combo screenshots — regenerated by manual testing
|
|
/combos/
|
|
|
|
# Legacy Nuxt portal — kept on disk for reference, not tracked here
|
|
/client-portal/
|
|
|
|
# Sister marketing site — separate Nuxt project, not part of CRM tracking
|
|
/website/
|
|
|
|
# Mobile audit screenshots — generated locally, regenerable
|
|
/.audit/
|
|
/.audit-screenshots/
|
|
|
|
# Migration script output (CSV reports, transcripts)
|
|
.migration/
|
|
|
|
# Tool caches / runtime state
|
|
/.claude/
|
|
/.serena/
|
|
/ruvector.db
|
|
|
|
# Filesystem storage backend root (FilesystemBackend default location)
|
|
/storage/
|
|
|
|
# Private credentials + forensic captures — never commit
|
|
/private/
|
|
|
|
# Local berth-PDF + brochure samples used as upload fixtures during dev.
|
|
/berth_pdf_example/
|
|
|
|
# Scratch / audit artefacts
|
|
tmp/
|
|
|
|
# Internal docs + Claude instructions: kept local-only, not in the shared repo
|
|
docs/
|
|
/CLAUDE.md
|
|
|
|
# Client-facing feature screenshots (real PII — do not commit)
|
|
docs/feature-screenshots/
|