Skip to content
v0 → production

You have the best-looking frontend in the category. Now build the half that is missing.

v0 produces genuinely excellent React - clean components, sensible Tailwind, real accessibility primitives. It does not produce a backend, and most v0 projects reach us as a finished interface wired to mock data.

v0production
Typical timeline
3–6 weeks depending on how much product is behind the UI
Pricing
Fixed quote after a free scoping call
Rollback
Written, rehearsed, and executed by you before handover
Why this move

What staying on v0 actually costs

Not a list of features you are missing. These are the four things that reliably turn into an incident, an invoice, or a lost deal.

  • 01

    Nothing is persisted

    Mock data, optimistic updates, and forms that resolve a promise rather than write a row.

  • 02

    Server actions are public endpoints

    Where a backend does exist, every exported server action is an HTTP endpoint that anyone can call.

  • 03

    The client boundary is one line thick

    A component that was server-only becomes client-rendered because something in the tree needed an event handler, and a key that was safe on the server is suddenly in the bundle.

  • 04

    The data model is the actual project

    The components imply a schema - this list has these fields, this form writes these values, this filter needs this index.

What clients struggle with

The sentences we hear most, and what we do about each one

These are paraphrases of things founders have actually said on scoping calls. The left column is the experience; the right column is the work.

  • "I thought I was nearly finished"

    The interface looks complete because it is complete. Every screen exists, every state is designed, the empty states are handled.

    How we help

    The first deliverable is an honest scope: the data model the UI already implies, the endpoints it needs, and the estimate for each.

  • "I do not know what a server action is or why it matters"

    The framework makes the boundary invisible on purpose, which is excellent for building and dangerous for reasoning about security.

    How we help

    We audit every action for an authorization check against the record, not just the session, and add a lint rule that fails the build when a new action ships without one.

  • "I need to show this to investors next week"

    A prototype that cannot hold real data is fine for a demo and a problem the moment someone asks to try it, or asks where the data goes.

    How we help

    We sequence the work so the parts that make it demonstrable land first: real accounts, real persistence on the two or three flows that matter, deployed on your domain.

  • "Will you replace the design?"

    Founders expect an engineering engagement to arrive and rebuild everything in its own style, losing the thing they liked.

    How we help

    We keep it. The v0 output becomes the design system: components extracted, tokens named, patterns documented.

Target architecture

Component by component, before and after

Every line is a decision we will walk you through, and every one of them is written down in the handover documentation.

TodaybecomesAfter the migrationWhy it matters
Mock data in component filesPostgreSQL schema derived from the componentsTypes, relations, constraints, and the indexes the existing filters and sorts already require.
Fake auth / a hard-coded userReal authentication with sessions and rolesPlus the account lifecycle nobody prototypes: verification, reset, deletion.
Unchecked server actionsAuthorization against the record, enforced and lintedA new action without a check fails CI rather than shipping.
Client/server boundary by accidentAn audited boundary with secrets provably server-sideBundle scanned in CI so a key that crosses the line breaks the build.
Forms that resolve a promiseServer-side validation, real writes, real error statesValidation lives on the server and is mirrored to the client, not the other way round.
Preview deploymentYour infrastructure with CI/CD and monitoringPreview environments per pull request, one-command rollback.
The engagement

Four phases, each with something you can hold

Scope is fixed after phase one. Every phase ends in artefacts you keep, whether or not you continue to the next.

  1. 013–5 days

    Derive the model

    We read the components and write down the schema they imply, then check it against how the product is meant to work.

    You receive

    • Entity-relationship model derived from the existing UI
    • Endpoint inventory with authorization rules per endpoint
    • Scoped estimate, phased
  2. 022–4 weeks

    Build the backend

    Database, migrations, authentication, and server-side validation, wired to the components you already have.

    You receive

    • Schema, migrations, and seed data
    • Authentication with sessions, roles, and account lifecycle
    • Authorized server actions with tests
    • Server-side validation on every write
  3. 033–5 days

    Harden the boundary

    Every action is audited for an authorization check against the record.

    You receive

    • Authorization audit across every action
    • Bundle secret scan wired into CI
    • Lint rule failing unauthorized actions at build time
    • Cross-tenant test suite
  4. 043–5 days, plus 30 days support

    Ship and instrument

    Deployment to your infrastructure with a pipeline, monitoring, and documentation - including the extracted design system, so the next developer inherits something coherent.

    You receive

    • CI/CD with preview environments and rollback
    • Error tracking, uptime monitoring, structured logs
    • Documented component library and tokens
    • 30 days of post-launch support
Risk register

What can go wrong, and what stops it

We would rather write these down than discover them together. Each one is a real failure mode from a real migration, with the control that prevents it.

  • The schema being wrong because the UI was wrong

    Phase one checks the derived model against how the business actually works before anything is built on it.

  • Scope growing as the real product is discovered

    Phase two implements the agreed model. Anything discovered along the way is captured and scheduled rather than absorbed, and the estimate is phased so you can stop at a working point.

  • A future feature reintroducing an unauthorized action

    The lint rule and the cross-tenant tests run in CI. Adding an action without a check is a failing build, not a finding in next year's audit.

Questions

Before you book the call

  • No. Keeping it is the plan. The v0 output becomes the documented design system - components extracted, tokens named - and the work happens behind it.

  • Almost always cheaper, because the frontend is normally half a project and it is already done to a good standard.

  • Yes, and it works well: generate the screen, then wire it to the existing backend.

Thinking about moving off v0?

The scoping call is free, and it ends with a straight answer about whether it is worth doing yet.

Book a Free Call