Obsessive about the partsyou will never even notice.
Which is exactly the point. A week of work scrapped on a Thursday. The
same screen rebuilt four times. A Sunday spent on something nobody will
click. Two hours on one word. Custom sites, web apps, and native iOS,
built end to end and still looked after once they ship.
Nearly everything here is live, in use, and built and run end to end
by this studio: a town’s own board, a bakery’s ordering,
the platform that bakery grew into, a work order system for field
crews, the portal clients sign in to, and the tools the studio built
for itself along the way. The one still being built, Agger, is for
contractors. The screens are the real apps, running on invented data.
Filter
Web
In development
Agger
Estimating and job cost for oilfield contractors. A bid is built at
the contractor’s own rates, from the estimator’s
workbook or an operator’s rate sheet, with takeoff quantities
brought in, vendor quotes compared and the gaps named. Win it and
the bid becomes the job’s budget by cost code, so nothing is
keyed in twice.
A crew in the field logs hours, equipment and quantities to the
job’s codes on a phone, with or without signal. Job cost reads
what has been spent and what the job is projected to cost against
the budget, and the bill lines come out at each operator’s
rates in an OpenInvoice upload file, checked line by line. Month
end reports for each client, and invoices, are still being built.
Its first testers are being taken on now.
Bidbuilt
Job costbuilt
Month end reportsbuilding
Invoicesbuilding
How it was built
A bid, its budget and its bill must agree to the cent, so every figure is whole cents, rounded once, half up. Every estimating route checks the caller’s seat first, and a script fails the build if one does not.
estimating routes
37
check scripts
58
Next.js
Postgres
Prisma
Details
Letters on the ground lineThe orange station dots sit where the extruded letters actually stand, not under their front faces, so the wordmark rests on its ground line the way a real extrusion would.
Priced as unit times quantityA bid is read as unit price times quantity. Here $0.83 a foot over 22,400 feet is $18,592, so each unit price rounds once, to the cent, half up, and the item total follows from it.
No percent, no guessA code with nothing installed has no percent and no projection, and the report says so in words rather than printing a zero or a guess. Here, 4 of 6 codes have a projection.
Your own notes, your team’s work and your work orders, on one
account. A thought written in the truck is waiting on the desk:
Today, Ahead, and the ones nobody has dated yet, with the
day’s deadlines laid out above them. Offline is not a failure
state.
On the company side, anybody with a link can file a request: a
form that asks only what the answers before it make relevant,
photographs, and a GPS fix from the phone. It lands on a project
board as a numbered work order carrying its checklist and its
cost ledger, and a technician closes it in three taps. What the
forms collected comes back out as a spreadsheet and a field
report with the sites drawn on a map.
How it was built
A note written with no signal must not be lost. It waits on the phone and goes up when the signal returns. Each send carries a key, so a retry after a lost reply gets the work order already made, not a second.
data models
143
API routes
246
Next.js
React
Postgres
Details
Numbers replace the form nameGive a form a prefix and its work orders count from MR-1001, and the card drops the form's name, which the letters, the words and the colored chip would otherwise say three times.
A question tied to anotherCompressor hours only appears if the unit is a compressor. The studio names the question each one hangs on, since a hinge you can see named is one you can follow.
Actual adds itself upThe actual is added up from the cost lines unless you type a total over it, and it says so under the field. The gap to the estimate reads in words: $216.10 under.
Where OvenBoard started. A neighborhood bakery that used to sell out through a third party storefront and a phone full of messages now opens its own ordering window every Friday morning, and closes it the moment the last pool sells out. Every loaf is promised once, however many people press order at the same second.
The regulars are recognized without anybody keeping a list: the biggest spenders become Founders, a weekly streak earns early access, and the drop text goes out in waves in that order. Pickup day is one sheet of names against loaves, with what each person still owes beside them.
How it was built
Everyone presses order the minute a window opens. Each order is a serializable transaction, and one that loses a race tries again after a short pause. A test sends eight two loaf orders at a ten loaf pool at once, and no more than ten sell.
tests
465
tries per order
6
Next.js
React
Postgres
Prisma
Details
Status, not a countStock shows as five notches and a word, not a number. A number invites arithmetic, and the only decision here is whether to hurry.
One number, one customerHowever a phone number is typed, with dashes, spaces or a leading 1, it collapses to the same ten digits, so one person never becomes three customers each holding part of their history.
The screen stays awakeThe pickup sheet sits propped up all through fulfillment, and an iPad dims just when both hands are in a bag of bread. Keep screen on holds it awake: off by default and remembered.
Where the studio’s offers are read, signed and paid. A prospect
opens one link on a phone, with no account: the work built for them,
the whole price with every choice added up by the server, and
Accept, Not interested and Ask a question given equal weight.
Signing is a six digit code sent to their email and a typed name,
and the deposit is paid by card, or by bank transfer or check at a
discount.
Once it is paid, the client signs in by an emailed link, with no
password, to a workspace of their own: the next steps with their
dates, the signed agreement, invoices and receipts, and a thread
for writing to the studio, answered by the person who built the
work. The studio’s side, where offers are composed, sent and
followed, is private.
How it was built
A prospect opens one link on a phone with no account, so the server adds every total, in whole cents, and the page only shows it. An offer can be read, configured and signed with scripts off.
tests
2,732
data models
79
Next.js
Postgres
Prisma
Stripe
Details
Tax on each paymentGross receipts tax is its own line, never inside a price, and each payment is taxed alone: $214.48 today, $214.48 at launch. That can differ by a cent from taxing the total and splitting it.
Rules said on the cardGift cards say "Only with Booking and shop site" right under the line. A selection that breaks a rule is refused with the rule in words, never silently corrected.
Never sent twiceEach message gets a key before its first try and waits in the browser until the server confirms it, so a dropped connection can neither lose it nor post it twice.
The town’s own board. Carlsbad has been running its news, its questions and its rumor mill through four different Facebook groups, and this is the one it owns. Ask who to call and the answers rank themselves by how many neighbors agree, naming the businesses they mention, so the directory learns who the town trusts from what people actually say.
Around it: a directory on a map, a calendar where a moderator has seen every event before the town does, a marketplace, groups, and weather alerts, road closures, city meetings and the high school’s scores brought in on their own. Residents who prove they live here get a room that is theirs alone. It installs on a phone like an app, and signing in is a text rather than a password.
How it was built
A directory that learns who the town trusts must not read like star ratings. It counts the times a neighbor named a place while answering someone else’s question, and shows nothing at zero. An answer may name three places at most.
tests
1,153
places per answer
3
React
Node
Express
WebSockets
Postgres
Details
Going around, rankedThe rail card ranks open talk by pull: a reply counts double a reaction, and a question gets a small boost. It also says plainly whether anyone has checked it yet.
Named by neighborsBeside the stars, a place shows how many neighbors named it while answering someone else's question. That is a different fact from a rating, and it stays blank at zero instead of a hopeful 0.
Warned before you postWhile you type, the composer can warn you about things like a house number in your draft. The check runs on the spot, and nothing you type is stored to do it.
The studio’s memory. Every decision, standard and hard won gotcha across these projects is distilled into one short item that keeps its reasoning, the words it came from and where it was said. When a decision changes, the new one points at the one it replaced, so the locker answers with what is true now and can still show how it got there.
Two doors onto one query layer: a web app for reading, and an MCP server that coding sessions ask before they build and write to as they decide. A scheduled harvest reads new commits and documents and files what they settled, and a guest portal lets an invited person put questions to it. These screens run on an invented company, because the real locker is private.
How it was built
A person on the web and a coding session over MCP both ask the locker, and neither may be told what the other would not be. Both go through one file of queries. Nothing in the graph is inferred: an edge is something an item names, or a decision it replaced.
MCP tools
9
data models
14
Next.js
Postgres
pgvector
Prisma
MCP
Private, by invitation only
Details
Every result shows its sourceEach result carries the sentence it was drawn from, word for word, plus its file and date. Search blends full text with meaning, so a paraphrase still finds it.
Replaced, never overwrittenWhen a decision changes, the old version stays in the record, marked replaced, with its date and reasoning. You can see what was held, when, and what replaced it.
A click only selectsClicking a dot selects it and offers choices; it never takes you anywhere. The first version navigated on any tap, which fails on a phone, where there is no hover to learn what a dot is.
Web
Live
OvenBoard
Sell your bread the way you bake it. A shop of its own for independent bakers who work in weekly drops: the window opens on its own, the caps hold inside the order itself, and the regulars get a head start they have earned. Nobody is promised the same last loaf in two different messages again.
Buyers pick a pickup time, join a waitlist when a pool sells out, or turn a basket into a standing order that is filled before the public gets a look. Pickup day is a board, the bake sheet and labels print themselves, and the banner press draws a ready to post picture straight off the board. One plan, and every shop gets its own address.
How it was built
Every shop is one baker’s, and none may see another’s. Routes never touch the raw database client. The one they get adds the shop to every query, so nobody has to remember, and a probe in CI tries to cross the line.
data models
31
migrations
39
Next.js
React
Postgres
Prisma
Details
A waitlist, no held seatsSold out items offer "Tell me when it's back". When stock frees up, everyone waiting is told at once and first to check out gets it, so no loaf sits unsellable behind someone who never answers.
Regulars filled firstStanding orders fill into each recurring drop before the public can order, so a regular's claim comes off the top of the cap. That is the 3 standing orders committed on this board.
Banners cannot overpromiseEach banner is drawn fresh from the live board, so a posted picture is never a promise the board can't keep. Two loaves and eighteen cookies left is what the board says.
The studio’s ad press. A study of sixteen paid social ads became forty two formats, and every one is drawn as a layout that knows nothing about whose ad it is. Each product brings a pack of its own colors, faces, mark, photographs and the layouts its positioning refuses, and the renderer holds that line.
A unit is refused when a face fails to load, when the copy gate objects, or when anything readable would sit under the platform’s own chrome. It runs as a command line and as a studio behind a password, off the same renderer, and draws for modulate.pro, OvenBoard, GrazePost, Carlsbad Sourdough and Carlsbad411.
How it was built
An ad can draw without an error and still be wrong. The renderer checks that each face loaded, because the browser’s own ready signal says yes when one failed, and it measures every readable word against the platform’s chrome. Each of its four refusals shipped something once.
refusals
4
brand packs
9
TypeScript
Chromium
Node
Private, draws for the studio’s own products
Details
Where the buttons will landThe dashed zones are where the platform's own buttons and caption cover an ad. Every readable word is measured against them, and a unit that hides its headline is refused, not shipped.
Layouts a brand refusesA brand lists the layouts its positioning rules out, and the renderer holds the line. Here, ten of the forty four are closed to modulate.pro, and asking for one is refused by name.
Copy checked before renderEvery line passes the brand's copy gate before a unit is drawn: no em dash, no banned words, no real names, and no phone number outside the 555-01xx fiction range.
Web
Live
GrazePost
The same engine pointed at market day, behind a door of its own. Farm stands and market sellers take preorders through a shop of their own, across as many selling days as they keep, so the last jar is spoken for once instead of twice and the people who turn up every Saturday get the first pick they have earned.
Saturday morning it is a board at the stall: what is packed, what is paid, what is still to hand over. Pack sheets and labels come off it, and standing orders mean the regulars stop having to ask.
How it was built
One engine, two brands, and neither name may show on the other’s pages. A probe asks both addresses of one server and checks that each shop answers at its own brand’s address and not at the other’s.
tests, shared with OvenBoard
640
Next.js
React
Postgres
Prisma
Details
Pick your dayOne shop can sell on several days, Thursday at the farm gate and Saturday at the market. Each selling day opens its own window with its own caps, name and place.
Same totals at elevenThe pack sheet counts everything not canceled, so a sheet reprinted at eleven, after half the pickups, shows the same totals as the one printed at four. Only a cancellation changes it.
Only its own nameA GrazePost shop's pages, emails and texts name GrazePost and never OvenBoard, though one engine runs both. A probe in CI checks that neither brand's name leaks across.