
If your database schema is wrong, your app is already dead.
I was clear from day one: PostgreSQL is the final destination. It is the only sane option if O9X is going to survive multi-user access, permissions, and concurrency.
But jumping straight into PostgreSQL as a non-coder is self-sabotage. You end up burning hours on SQL sessions, migrations, and access rules instead of validating business logic with AI. That is not progress. That is slow bleeding.
I needed a sandbox — fast, disposable, and fully under my control — before building anything with AI.
The Sandbox Search
I evaluated two options.
Baserow is capable and cloud-first, but opinionated. It shines when wired into an external SQL backend. For my use case, extracting a clean, portable schema felt like work before work.
PocketBase is a single executable. No setup. No internet. No ceremony. PocketBase won immediately. I could run it locally, break things freely, and build a working app in minutes. No latency. No permissions maze. Just logic.
Why PocketBase Worked
PocketBase lets you design tables visually. Guards link to Sites. Attendance links to Shifts. No code. No guessing.
Because everything runs locally, iteration is fast and cheap. Break the schema? Rebuild it in minutes.
The real advantage is schema sovereignty. PocketBase exports the entire schema as a clean JSON file. That file is the contract. It is explicit. It is portable. It does not lie.
Controlling the AI
I set a hard rule: the AI does not invent structure.
By designing the schema myself inside PocketBase, I freeze the data flow of the app. The AI only touches what I explicitly allow — specific tables, specific changes.
PocketBase is the testing lab. PostgreSQL is production. The bridge between them is the schema file.
This is how you prevent hallucinated business rules. The machine writes code. The operator owns the model of reality.
Build Your Own Data Structure
Stop using spreadsheets to plan databases.
Download the PocketBase executable — it is under 30 MB. Build your core tables: Staff, Units, Logs. Export the schema as JSON. Start a fresh AI session. Upload the JSON as the system truth for all code generation.
No drifting schemas. No invented columns. No AI-generated blueprints you do not understand.