Felipe Rodriguez
Press F to flip
Market, Consumer and Business

Three apps, one contract

Three Next.js apps on one C# API and one generated TypeScript contract, and an honest map of what crosses between them.

Who each app is for

Business is the venue owner's console and every venue's public site. Market is the console for the coordinators who run markets, the vendors who sell at them and the artists who play. Consumer is the guest's side: finding events and venues, and the night itself.

One contract

The API is C# on .NET 10 over PostgreSQL. The apps never hand-write a response shape: the shared contract package is generated from the API's OpenAPI document, and five gates check every change to it. On every push to master, CI compares the API's routes with the contract and goes red when the contract falls behind.

What crosses between them

A DJ posts a gig in Market, and the venue it names gets an invitation to join. A crew member asks for time off in Market, and the venue decides in Business. Guests share photos from a night in Consumer, and the venue sees them in Business. A vendor's booking shows up on the venue's 3D floor.

Measuring the seams

On 27 Oct 2026 I had every API call in Market, Consumer and Business checked against the API's routes. None points at a route that doesn't exist, and none of the 17,490 calls the route map resolved uses the wrong HTTP method. The same pass found 27 seams that aren't finished yet, like a sign-up one app writes and no app reads. Each one became a work item.

API
1,630 endpoints in 220 controllers
counted from the API source on 27 Oct 2026
Database
475 PostgreSQL tables
counted from the API source on 27 Oct 2026
Calls checked
17,490, none with the wrong method
the seam recon, 27 Oct 2026
Open seams
27
the seam recon, 27 Oct 2026
All work