18 — Web Platform: Every Mode, One Next.js App
UI project 5 of 5 · app/web-platform
Stack: Next.js App Router, TypeScript, Tailwind, TanStack Query, buf-generated protobuf clients, Playwright, vitest
Where this sits. The breadth artifact. One application rendering every product mode in the platform, compiled against the same protobuf contracts the backend serves — which is the part a systems interviewer cares about.
The surface
app/
array/ billboard/ boxoffice/ dating/ globalchat/ mating/
openhouse/ storefront/ bizz/ vitals/ identity/ login/ auth/
billing/ dashboard/ blog/ careers/ press/ faq/ legal/ privacy/ promo/
components/ config/ db/ destinations/ footer.tsx layout.tsx
Plus e2e/ (Playwright), gen/ (generated clients), buf.gen.yaml,
vitest.config.ts, and playwright.config.ts.
Why it matters beyond "it's a frontend"
One schema, three languages
buf.gen.yaml generates TypeScript clients from the same 24 .proto files
in app/proto that generate the Go servers and
the Swift gateways. The web tier cannot drift from the contract, because it
does not hand-write the contract.
That is the concrete answer to "how do you keep clients and servers in sync across three platforms?" — and it is already built, not aspirational.
Real end-to-end tests
Playwright specs plus vitest units, wired into CI. The Solomon web client's e2e run is live with no mocks — it talks to the actual inference service.
It is where the internal tools live
The BoxOffice moderator console is a route in this app, nested under support so it inherits identity bootstrap and the query client while overriding the shell. That nesting decision — inherit the plumbing, replace the chrome — is the reusable pattern.
Bring-up is documented
WEB_PLATFORM_BRINGUP.md is a runbook: dependency map, what is already fixed
in code, a fast path (point at production) versus a local path (the docker
stack), a production deployment checklist, verification steps, and
troubleshooting. Someone else can start this app without asking you.
Interview surface this opens
- Schema-first development across a polyglot client fleet
- Next.js App Router data flow and where server/client boundaries belong
- Running Playwright against a live service instead of mocks — what it buys and what it costs
- Route nesting to inherit auth/query plumbing while replacing layout