Postgres now holds exactly one table — data_migrations, the data-migration runner's own bookkeeping ledger (drizzle/schema.ts). All personal data left the server in M117/03 (tracker data → browser IndexedDB) and M128/03 (account system removed); the E2EE sync tables live in openplate-sync. The server stores no user data at all.
Yet a self-hoster still has to run a full Postgres 17 container so a migration runner can record which migrations ran — on a database with nothing left to migrate.
Proposed: remove the Postgres dependency entirely — drop drizzle/the pool/data_migrations, the compose postgres service, the DB_* env vars, and the migration step in scripts/start.sh. Any future one-shot data transforms would be client-side (IndexedDB schema versioning already handles this in app/lib/local-store/).
Payoff: the self-host story becomes a single stateless container, matching what the README promises (local-first, no server data).
Care needed: the hosted deploy's existing data_migrations rows and Bay config reference the DB; removal must land as a coordinated deploy.
Postgres now holds exactly one table —
data_migrations, the data-migration runner's own bookkeeping ledger (drizzle/schema.ts). All personal data left the server in M117/03 (tracker data → browser IndexedDB) and M128/03 (account system removed); the E2EE sync tables live in openplate-sync. The server stores no user data at all.Yet a self-hoster still has to run a full Postgres 17 container so a migration runner can record which migrations ran — on a database with nothing left to migrate.
Proposed: remove the Postgres dependency entirely — drop drizzle/the pool/
data_migrations, the composepostgresservice, theDB_*env vars, and the migration step inscripts/start.sh. Any future one-shot data transforms would be client-side (IndexedDB schema versioning already handles this inapp/lib/local-store/).Payoff: the self-host story becomes a single stateless container, matching what the README promises (local-first, no server data).
Care needed: the hosted deploy's existing
data_migrationsrows and Bay config reference the DB; removal must land as a coordinated deploy.