No-code apps and databases decision
Grist
The core loop is buildable, but a dependable replacement becomes a real weekend or multi-day project. For Grist, combine spreadsheet formulas with relational records in a small self-hosted workspace. The hard boundary is mature formula engine, access rules, collaboration, integrations, and hosting, plus data model flexibility, collaboration, and integrations.
Visit website↗Open-source builds that already do this
Every project below is open source and already does this job today. Fork one, self-host it, or take the parts you need — the build prompt further down assumes an empty file, and this is the shortcut past that. Licences differ; check the one on each card before you ship.
What a replacement has to do
- Combine spreadsheet formulas with relational records in a small self-hosted workspace, provide grid, form, kanban, and filtered views, and expose a documented API.
What it still won’t have
- mature formula engine, access rules, collaboration, integrations, and hosting
- real-time multiplayer
- automation and integration breadth
- scale and formula depth
- enterprise permissions
What remains hard
- Team collaboration
- Integration maintenance
- Switching costs
First-year cost
The build hours below are a category default, not an estimate for this product. Change them to your own numbers and the comparison follows.
Keep paying
Paying is—cheaper in year one.
On cash alone, building overtakes the subscription at 1 seat.
Money you would actually spend
Time you would spend
—
What you would spend
What we assumed
The verdict above measures whether you could build it. This one is only about money.
Runnable build prompt
Build a personal replacement for Grist in an empty repository. Use Next.js 15, TypeScript, PostgreSQL, Drizzle ORM, and Docker Compose; do not offer alternative stacks. The core loop is: combine spreadsheet formulas with relational records in a small self-hosted workspace, provide grid, form, kanban, and filtered views, and expose a documented API. Make the first run work locally with one documented command. Store all user data locally by default and make export straightforward. Put secrets in .env, ship .env.example, and never commit credentials. Create workspaces, bases, tables, fields, records, attachments, relations, and saved views. Support text, number, currency, date, boolean, select, formula-lite, and relation field types. Build grid, form, kanban, and record-detail views from one canonical schema. Add role-based permissions, optimistic concurrency checks, audit history, and trash restore. Provide CSV import or export and a token-authenticated REST API generated from the schema. Ship migrations, seed data, backups, health checks, and a schema export format. Include clear empty, loading, success, and recoverable error states. Add input validation, safe filenames, and graceful handling of unavailable APIs. Write focused tests for the core transformation and one end-to-end happy path. Create a README with setup, architecture, permissions, data location, and backup steps. Do not add accounts, billing, telemetry, analytics, or a hosted control plane. Deliberately leave out full spreadsheet formula compatibility. Deliberately leave out hundreds of automations and integrations. Deliberately leave out large-enterprise governance and vendor-managed scale. Finish by running the tests and listing the exact commands used.





