All writing

Architecture4 min read

Enterprise MVP, end to end: from the first workshop to production

The map for a seven-part series: how I take an enterprise MVP from requirements gathering through architecture, database design, development, CI/CD and deployment on Google Cloud, and the artefact each phase must leave behind.

Series · Part 1 of 7Enterprise MVP, end to end
  1. Enterprise MVP, end to end: from the first workshop to production
  2. Requirements gathering for an enterprise MVP: what to ask, what to write down
  3. Architecture design for an enterprise MVP: C4 diagrams, a modular monolith and the seams that matter
  4. Database design for an enterprise MVP: from domain model to the first PostgreSQL migration
  5. Developing an enterprise MVP with Flask and React: structure, workflow and tests
  6. CI/CD for an enterprise MVP: GitHub to Cloud Build to Cloud Deploy
  7. GKE or Cloud Run? Choosing where an enterprise MVP runs, and the go-live checklist
On this page · 6 sections
  1. A note on the example
  2. The project: a supplier onboarding portal
  3. What are the phases of an enterprise MVP?
  4. How long does an enterprise MVP take?
  5. Why Flask, React and PostgreSQL on Google Cloud?
  6. The series

Most writing about software delivery covers one phase in isolation: how to gather requirements, how to design a schema, how to set up a pipeline. The hard part of leading a delivery is the hand-offs between phases, where a decision made in week one quietly sets the cost of week ten.

This series walks through one enterprise MVP from the first stakeholder workshop to a production deployment, phase by phase, with the artefacts I expect each phase to produce. It’s the process I’ve refined over a decade of shipping systems for enterprise clients and, more recently, as a founder.

A note on the example

The project in this series is illustrative. It’s modelled on the kind of enterprise MVPs I’ve led, but the domain, names and numbers are invented so I can show complete schemas, code and pipelines without exposing anyone’s system. Where I state an opinion, it’s mine and comes from real projects. Where I show a config file, it’s a working pattern rather than a copy of a client’s.

The project: a supplier onboarding portal

A mid-size manufacturer onboards a few hundred new suppliers a year. Today it runs on email, spreadsheets and a shared drive:

  • Procurement invites a supplier and chases them for documents.
  • The supplier emails tax registrations, bank details, certifications and insurance certificates.
  • Compliance checks the documents; finance verifies the bank account.
  • Someone types the approved supplier into the ERP by hand.

Onboarding takes three to six weeks, nobody can say where a given supplier is stuck, and the audit team can’t prove who approved what. The MVP replaces that with a portal: suppliers fill in a guided application, reviewers approve or reject each step, every action is audited, and approved suppliers sync to the ERP automatically.

It’s a good teaching example because it touches everything an enterprise MVP has to get right: single sign-on, role-based access, an audit trail, document storage, a workflow with states, and an integration with a system you don’t control.

What are the phases of an enterprise MVP?

Six phases, each ending with an artefact that someone other than the author signs off:

The six phases of an enterprise MVPRequirements, architecture, database design, development, CI/CD and deployment run in order, each with its artefact, and development feeds back into requirements every week.

feedback every week

1 · RequirementsScope & NFR sign-off

2 · ArchitectureC4 diagrams + ADRs

3 · Database designERD + first migration

4 · DevelopmentWeekly demo builds

5 · CI/CDGitHub → Cloud Build → Cloud Deploy

6 · DeploymentRuntime choice + go-live checklist

PhaseArtefactSigned off by
RequirementsScope document: user stories, acceptance criteria, non-functional requirements, what is out of scopeBusiness sponsor, security, IT
ArchitectureC4 context and container diagrams, a handful of architecture decision records (ADRs)Client architecture board or CTO
Database designEntity-relationship diagram, data dictionary, first versioned migrationTech lead, data owner
DevelopmentA demoable build every week, an OpenAPI contract, a test suite that runs on every pull requestProduct owner at each demo
CI/CDA pipeline that takes a merged commit to a staging environment with no manual stepsTech lead, client IT operations
DeploymentRuntime decision, runbook, go-live checklistClient IT operations, security

The phases overlap; this isn’t waterfall. Development feeds back into requirements every week, and the pipeline is built in the first sprint rather than the last. But the artefacts are sequential: you can’t meaningfully design the schema before you know the entities, and you can’t choose a runtime before you know the availability and latency targets.

How long does an enterprise MVP take?

For a system this size, with a team of four to six engineers, my planning shape is 10–12 weeks:

  • Weeks 1–2: discovery. Workshops, process mapping, the scope document.
  • Week 3: architecture and data design. Diagrams, ADRs, schema, and the first deploy of an empty app to a real environment.
  • Weeks 3–10: build. Weekly increments, each demoed to the client on a staging environment.
  • Weeks 9–12: hardening and go-live. Security review, load test, data migration from the spreadsheets, user acceptance testing, cut-over.

The single most useful scheduling decision is deploying something to a production-like environment in week three. Every week after that, “deployment” is a non-event instead of a project.

Why Flask, React and PostgreSQL on Google Cloud?

Choose boring, proven technology for an MVP. This stack is boring in the best way:

  • Python Flask for the API. It’s small, explicit, and easy for the client’s own team to own after hand-over. Its Blueprints map cleanly onto the modules of a modular monolith.
  • React for the frontend. It’s the safest hiring bet in most markets and has a mature component ecosystem for forms-heavy enterprise UIs.
  • PostgreSQL for the data. Real constraints, transactions, jsonb where flexibility is genuinely needed, and it scales far beyond what an MVP will ask of it.
  • Google Cloud: Cloud SQL, Cloud Run, Cloud Storage, Secret Manager, and a delivery pipeline of GitHub → Cloud Build → Cloud Deploy.

None of these choices is clever, and that’s the point. An MVP is the wrong place to learn a new framework on the client’s budget.

The series

  1. The map (this post): phases, artefacts, timeline.
  2. Requirements gathering: stakeholders, workshops, user stories, and the non-functional requirements that drive everything after.
  3. Architecture design: C4 diagrams, a modular monolith in Flask, integration seams, and decision records.
  4. Database design: from domain to ERD, PostgreSQL modelling choices, audit trails, and migrations from day one.
  5. Development: repo layout, contract-first APIs, the approval workflow in code, and how we test.
  6. CI/CD: GitHub → Cloud Build → Cloud Deploy, with approvals, migrations and rollbacks.
  7. Deployment: how to choose between Cloud Run and GKE, and the go-live checklist.

If you want the shorter version of the philosophy behind all of this, start with Shipping an enterprise MVP without painting yourself into a corner.

Every phase should leave behind something a stranger could pick up and continue from.