Blog

MVP backend: when static data is enough and when you need an API

Choose an MVP backend: compare static data and APIs, weigh migration costs, and start with Kanesh collections without writing a custom backend.

Static data is enough for an MVP when a developer can maintain a small, mostly public dataset and updates can wait for a deployment or manual refresh. You need an API backend when people must edit shared data independently, access needs permissions, or several clients need the same current records. The choice depends on how the product works today, rather than how large you hope it becomes.

Start with the editing process

A JSON file, hard-coded content, or a spreadsheet can be a sensible first source. A landing page with five examples does not need a database just because it might become a marketplace. A developer can review changes alongside the frontend, and a spreadsheet lets someone maintain rows without editing source code.

Ask what happens after someone changes a value. Does the site rebuild? Does someone copy spreadsheet rows into JSON? Is a manual refresh acceptable? A spreadsheet may simplify editing while still leaving publication as a manual step. That can be enough while you are testing whether anyone wants the product.

The boundary changes when a customer submits a record, an editor needs an immediate update, or two apps must agree on the latest value. Those are shared data requirements, not merely more content.

Static data or an API?

DecisionStatic data is enoughAn API backend fits better
Who edits dataDeveloper edits files, or one person maintains a sheetEditors and users need independent access
How often it changesOccasional updates can wait for publicationChanges must reach clients without a code release
Auth and rolesData is public; editing happens outside the appReads and writes need enforced permissions
Multiple clientsOne site consumes a controlled snapshotWeb, mobile, or scripts share current records
Search and filterA small public dataset can be filtered locallyClients need filtered, sorted, paginated reads
CostLittle infrastructure, with manual work per updateServer operation and setup, with less manual copying

Use the table to identify today’s constraint. A hundred public entries might work perfectly in a file. Ten private customer records already need a proper access boundary. Record count alone does not decide the architecture.

The cost of building too early

A custom backend means more than returning JSON. You must design storage, validate writes, enforce permissions, handle credentials, and keep the service running. Building those pieces before the product’s data model settles creates work you may discard after the next customer conversation.

Static data has a later cost too. Moving it means cleaning inconsistent values, defining fields, replacing file reads with requests, and checking which records should be public. Copies scattered across components make that harder. Keep one source, consistent identifiers, and one place where the frontend loads data. Those small choices make migration easier without building a speculative backend.

An API from day one without writing one

Kanesh offers another starting point: use an existing backend and spend your time on the product. It is free to self-host for one workspace, but hosting and maintenance remain your responsibility. Kanesh is new and at its first stable release, so test it against your requirements before relying on it.

Create collections through Settings → Data model → Create collection in Studio. Alternatively, Codex or Claude Code can create collections and records through the REST API using an authorized token. MCP only reads schemas and records; it cannot perform those writes. Each collection becomes available through REST and GraphQL immediately.

Start with the Docker image and SQLite on a small server. SQLite is the default and needs no separate database service. Follow getting started, then use the database guide to understand PostgreSQL or MySQL configuration when your deployment needs it. Moving existing data later is a migration you must plan and verify; changing a connection setting alone does not transfer it.

The blog use case gives a concrete content model, and the SvelteKit and Next.js guide shows frontend integration. For another option, read the PocketBase comparison. Realtime, OAuth, workflows, and functions are on the roadmap, so do not include them as available features in your MVP scope.

Signs you have outgrown static data

  • Editors wait for a developer to publish ordinary changes.
  • Users need to create or update persistent records.
  • Different roles need different read or write permissions.
  • Several clients maintain conflicting copies of the same data.
  • Local filtering requires downloading data clients should not receive.
  • Manual copying now causes recurring mistakes.

FAQ

Does every MVP need a backend?

No. A public prototype with occasional content changes can use files or a spreadsheet. Add a backend when shared writes, permissions, or publication needs justify operating one.

Is migrating later always cheaper?

No. It saves early development effort, but inconsistent data and duplicated loading logic can make migration expensive. Keep a clear source of truth and revisit the choice when manual work becomes routine.

Can Kanesh replace all custom server code?

No. It supplies collection APIs and access control, but your product may still need its own business logic. Check Kanesh’s current capabilities against your requirements before choosing it.

Buy me a coffee