Part of Milestone A — Safe Base. Ref: #27
Prepare PostgreSQL as the future V4 control-plane database without forcing the whole app onto it immediately.
Alex tasks
Database connection
Migration tooling
First PostgreSQL schema (foundational only — no project tables yet)
Repository facades
Backup/restore
Tests
Do not build yet
Project migration, products, systems, Stripe, portfolio CMS.
Exit gate
- SQLite mode passes all tests
- PostgreSQL mode passes foundation tests
- Migration runner is deterministic
- Backup/restore scripts understand PostgreSQL
- No dashboard behaviour changed
Rollback
Set SYSTEMS_DB_ENGINE=sqlite. No production object migration required yet.
Part of Milestone A — Safe Base. Ref: #27
Prepare PostgreSQL as the future V4 control-plane database without forcing the whole app onto it immediately.
Alex tasks
Database connection
api/src/db/postgres.jsapi/src/db/sqlite-legacy.jsapi/src/db/repositories/directory structureapi/src/db/migrate.jsrunnerapi/src/db/migrations/directorySYSTEMS_DB_ENGINE=sqlite|postgres,DATABASE_URL,MIGRATIONS_AUTO_RUN=falseMigration tooling
api/scripts/migrate-sqlite-to-postgres.jsapi/scripts/verify-postgres-migration.jsscripts/migrate-v4-windows.ps1scripts/verify-v4-windows.ps1First PostgreSQL schema (foundational only — no project tables yet)
schema_migrationsorganisationsadmin_usersadmin_sessionsplatform_settingsaudit_log_v4jobsRepository facades
repositories/usersRepositoryrepositories/settingsRepositoryrepositories/auditRepositoryrepositories/jobsRepositoryBackup/restore
pg_dumpTests
Do not build yet
Project migration, products, systems, Stripe, portfolio CMS.
Exit gate
Rollback
Set
SYSTEMS_DB_ENGINE=sqlite. No production object migration required yet.