Workbench Get started
Runs locally · 19 stages · No account

The client website build, with its working shown

Nineteen stages from the first requirements call to the optimisation loop that never ends. Each one asks for what it actually needs, reads what the stages before it decided, and produces a document you can hand over. Nothing is marked complete by ticking a box.

No accountYour projects never leave the machine
No percentageStatus is derived, not declared
Your own API keyAnd only where it helps
Project overview

What this is, and what I built

ProjectWorkbench, a local client website workbench
TypeIndependent product development
RoleProduct design, architecture and development. Everything on this page and in the tool.
ProblemA website build is thirty decisions made over two months by four people, and the record of them is a spreadsheet, a chat thread and somebody's memory. By launch nobody can say whether the thing agreed at kickoff was ever built.
ApproachOne stage per real piece of work, each reading what the stages before it decided. Status is derived from the data rather than declared, and every stage ends in a document rather than a tick.
StackNode and Express, SQLite, React with Vite, no build tooling beyond that. The Claude API for optional assistance, through your own key.
ScopeRequirements, research, sitemap, content, wireframes, design, build, responsive, CMS, SEO, analytics, performance, QA, review, infrastructure, launch and the growth loop afterwards.
Scale19 stages, 6 phases, 4 platforms, and a wireframe builder with 19 section types and 35 element kinds.
0stages, each with its own deliverable
0platforms, with task lists that swap
0progress bars anywhere in the tool
0gates carried into the launch decision
The shape of it

Six phases, nineteen stages

In the order the work actually happens. Each stage reads the ones before it, so a decision made in week one is still load-bearing in week nine.

Planning

Requirement gathering, competitor research, sitemap creation, content planning. The KPIs agreed here are what stage 18 reports against, nineteen stages later.

01 — 04

Design

Wireframing and UI design. A free-positioning canvas with per-breakpoint overrides and linked sections, then real colour and type applied over the same blocks.

05 — 06

Development

Website development, responsive development, CMS integration. Page, component and integration trackers, all drawn from the sitemap and the wireframe.

07 — 09

Technical

SEO, analytics, performance and QA. Configured versus verified, event recommendations read off the wireframe, and a benchmark table that colours itself.

10 — 13

Launch

Stakeholder review, domain and hosting, pre-launch testing, deployment. The launch decision reads six gates live from the stages that own them.

14 — 17

Growth

Post-launch monitoring and continuous optimisation. The only stages that never finish — one observes, the other acts, and the loop feeds back into the build.

18 — 19
A worked example

From a kickoff call to a launch decision

One path through the tool, with each stage reading what the one before it decided.

01

Agree what it is for

Objectives, audience, offerings and the KPIs that will judge the site. The KPI table is strict here on purpose — it is the thing stage 18 answers against, and a target agreed at kickoff in the client's own words is a real commitment.

02

Build the sitemap, then the pages

Every page gets a path, a purpose, a primary keyword and a CMS flag. Those four fields go on to populate the content plan, the wireframe page list, the build tracker, the metadata table and, a year later, the ranking table.

03

Wireframe it, then design over the top

Sections on a canvas with free positioning, pin constraints and per-breakpoint overrides. Stage 06 applies real colour and type to the same blocks, checks contrast against every background a colour actually sits on, and exports working HTML.

04

Pick a platform and the tool changes

Framer, Webflow, WordPress or custom. Thirteen stages read that choice: the task lists, the CMS vocabulary, the deployment steps, whether hosting is managed or yours to provision. Switching platforms loses nothing, because ticks are kept per platform.

05

Configured is not verified

SEO carries two ticks per page. Configured means you entered it; verified means you opened the published source and saw it. Only verification counts toward the stage, because the gap between the two is where SEO quietly fails.

06

The launch decision reads six gates

QA, stakeholder sign-off, mandatory revisions, infrastructure, SEO verification and performance — read live from the stages that own them. A red gate cannot be cleared from the launch page. There is no override, because an override would be used.

Capabilities

Not a checklist. A workbench.

Every status is computed from what you actually recorded. Nothing can be marked done without the work behind it existing somewhere in the data.

A wireframe you can actually lay out

Nineteen section types and thirty-five element kinds, with free positioning, snapping, pin constraints, auto-layout stacks and overrides per breakpoint. Save a section and every instance of it follows.

Three widths, one source

Design applied to the same blocks

Palette, type scale and spacing land on the wireframe rather than beside it. Contrast is real WCAG arithmetic against every background a colour is actually placed on, and a failure is not softened.

Exports working HTML

Four platforms, one workflow

Generic tasks are translated into the platform's own words, with a table showing the mapping. Thirteen stages change with the choice, and your own added tasks survive a switch.

Ticks kept per platform

Events read off your wireframe

A form produces form_start and generate_lead. A section with no button, form or decision point says plainly that it needs no event, because forty events nobody reads is the common failure.

Rules, not a model

Redirects read as a graph

Loops and chains are invisible from a single row, so the whole table is walked. A chain built by two people on different days looks correct twice over.

Caught, not listed

DNS values are never generated

The value column is deliberately left empty. A guessed A record will be accepted because it looks right, and a wrong one produces a site that resolves to nothing with no error anywhere.

Honest about not knowing

A real significance test

A two-proportion z-test on your experiment numbers, with sample adequacy checked before significance. Eight conversions against three can clear 95% while telling you nothing, so it refuses to call it.

Four verdicts, no eyeballing

Done is not verified

QA, stakeholder review and optimisation all separate the work being finished from someone confirming it. Only the second clears a gate, because the alternative is the same feedback arriving twice.

In three stages

Derived validation everywhere

Every stage ends with checks computed from its own data, each saying why it matters rather than only that it failed. A warning is surfaced and left alone; only genuine errors fail.

Nothing ticked by hand

A deliverable per stage

Nineteen documents assembled from what you recorded, previewable in place, copyable as Markdown and printable to PDF. Several also export CSV for the spreadsheet somebody will inevitably ask for.

19 documents, 6 CSVs

Undo that spans stages

Sixty steps of history, including the cross-stage writes where a design change edits the wireframe underneath it. One keystroke, one undo, both ends restored.

Ctrl+Z across the tool

Optional AI, kept to its lane

A model can suggest changes to a page's sections and copy, through your own key. It never produces a status, a finding or a check, and every suggestion is one undo away from gone.

Suggests, never decides
Decisions

Three choices that shaped everything else

Each closed a door deliberately. The costs are as interesting as the benefits.

No stage tracking anywhere

Problem
A percentage invites you to improve the number. A completion toggle gets ticked by the person who wants to move on, and from then on the tool says a stage is done because somebody said so.
Decision
No progress bars, no completion gates, no reviewed-and-approved toggles at stage level. Status is derived from each stage's own data, and the validation lists specific obstacles instead.
Outcome
A stage cannot be declared finished. The cost is that there is no single number to report upward, which is the right trade for a record that stays true.

Gates read live, with no override

Problem
The common failure at launch is not that something was missed in the final check. It is that something was left unfinished four stages earlier and everyone assumed it had been picked up.
Decision
The launch stage reads six gates live from the stages that own them, and a red one cannot be cleared from that page. No tick, no acknowledgement button, no override.
Outcome
It is the only place the whole project's state is visible at once. The cost is friction at exactly the moment people are in a hurry, which is the point.

It records work, it does not do it

Problem
A tool that deploys, edits DNS or publishes pages has to hold production credentials for four platforms, and its worst failure is considerably worse than a wrong row in a table.
Decision
No deployment, no DNS writes, no publishing, no generated DNS values. It records what a person did, and refuses to guess what it cannot know.
Outcome
Nothing it does can take a site down. The cost is manual entry in several stages, and the honest answer is that a few read-only integrations would fix most of it.
The hard parts

What was difficult to get right

The problems that took longest, and what each one turned out to be.

Undo across two stages at once

A design override in stage 06 writes to a block owned by stage 05. Snapshots were being read inside a React state updater, which meant the history pointer had already moved and undo restored the state you were trying to leave. Capturing synchronously before the updater fixed it.

Keeping one wireframe honest at three widths

Overrides per breakpoint, constraints resolved at the preview width, and stacks laid out before constraints apply. The comparison view then had to scroll each column rather than the page, which needed a grid that can shrink below its content.

A significance test that refuses to answer

Checking adequacy before significance is the whole value. With small numbers the maths produces confident nonsense, and the honest verdict on a site with a few hundred visitors a month is usually that it cannot be called.

Deciding what the tool must not know

Generating a plausible A record, a title, or a test case would all have been easy and all would have been accepted because they look right. Every one of those is a place where being unhelpful is correct.

How it compares

Project tools track tasks. This one knows the work.

Not a criticism of the trackers, which do several things this cannot. A different trade: you give up the integrations and the team features, and keep a record that understands what a website build actually involves.

A project trackerWorkbench
Where the project data livesTheir serverYour machine
Knows what a website build involves✗✓
Each stage reads the ones before it✗✓
Status derived rather than declared✗✓
Produces client deliverables✗✓
Wireframing and design built in✗✓
Changes with your build platform✗✓
Multiple people editing at once✓✗
Notifications and assignment✓✗
Time tracking and invoicing✓✗
Mobile apps✓✗
Seats, tiers and account limitsYesNone

A tracker is the better answer if several people need to work in it at once, or if the same tool has to handle invoicing. This is the better answer if you want the build itself understood, and the record to still be true at launch.

Questions

The things worth asking

Does it build the website?

No. It runs the process around the build and produces the documents, and the wireframe and design stages export working HTML you can take into your platform. The site itself is built in Framer, Webflow, WordPress or your own code.

Why is there no progress bar?

Because a percentage gets rounded up to "basically done" and a completion toggle gets ticked by whoever wants to move on. Each stage derives its status from its own data, and tells you the specific things outstanding instead.

What does it need installed?

Node 18 or newer. SQLite comes with it, there is no database to set up and no account to open. Install once in each folder, run two commands, and open the page it gives you.

Does it connect to Search Console, GA4 or my host?

Not yet. Numbers are entered by hand in the performance and monitoring stages. A read-only fetch would fill a real share of four stages and is the clearest next piece of work; it is deliberately not a write integration.

Can a client use it?

No. Stakeholders do not log in — somebody on the team records their feedback into the review stage. That is a real limitation, and building a review portal would change what this is.

Where does AI come in?

In two places, both optional and both through your own key: suggesting changes to a page's sections in the wireframe and design stages. It never produces a status, a check or a finding, and every suggestion is a single undo away from gone.

Does it work for one person or a team?

One person at a time. There is no concurrent editing, no assignment and no notifications. It is a workbench, not a workspace.

Get started

It runs on your laptop.

Unzip it, install once in each folder, run two commands, and open the page it gives you. One client per workbench, all of it on your own disk.

Node and Express SQLite, no setup React and Vite No account No telemetry