Client sites
Same method, opposite briefs — which is the only way to tell a method from a template.
I.The pair
One site is in English, for an American theatre-maker, and its job is to be expressive: a catalogue you browse. The other is in Portuguese, for a regulated professional-services practice in Brazil, and its job is to be a funnel: a path you walk. They are the same stack. They look and behave nothing alike, and that is the argument.
- cbA playwright, director and composer with a body of work and no way to license it. Positioning first — “plays and music to license, talks to book” — then the copy, then the code. Every licensable title carries its own pre-filled inquiry email, so an enquiry names itself the moment it lands. Press recovered from the Internet Archive and rehosted, because a citation whose source has died is still a citation if you keep it.en · one expressive page · licensing catalogue · recovered press
- vcNine URLs in Portuguese for a B2B practice in a regulated field, where what you may claim is constrained by law. A Sanity-backed blog with draft mode and author pages, LGPD consent gating that actually gates, a JSON-LD graph with linked identifiers across every page, a WhatsApp qualifier ahead of the conversation, and server-side conversions deduplicated against the pixel.pt-br · 9 urls · sanity cms · lgpd consent · json-ld graph
II.What is identical underneath
- framework
- Next.js App Router, TypeScript, static where it can be static.
- type
- next/font, self-hosted, subset — no runtime request to a font CDN and no layout shift on first paint.
- styling
- Design tokens declared in CSS, not in a JavaScript config. Colour, scale and spacing swap per client; the structure does not.
- hosting
- Vercel, continuous deploy from a GitHub repo the client owns.
- instrumentation
- Analytics and pixels created on day one, before there is any campaign to measure — because the one thing you cannot do retroactively is start counting.
- handover
- Domain, repository and every account in the client’s name. I stay as a member, not as the owner.
The stack is the constant. Everything visible is a consequence of what the business actually needs — which is what makes it a method and not a theme.
III.The curve, admitted
The English site shipped first and shipped without structured data. The Portuguese one, a couple of months later, has a full entity graph with linked identifiers on every page — because in between I read enough about how machines resolve entities to be annoyed at myself. The second site is better than the first in exactly the way you would expect, and pretending otherwise would cost more credibility than admitting it does.
The setup sequence that produced both is written down as a playbook: domains, mail, repo, CMS, form backend, analytics, pixels, server-side conversions, handover. Anyone on my side can run it. That is the part that makes it a system rather than a good week.
11 sites shipped since 2024, most handed over in the client’s name — domain, repository and accounts. Two are linked above; the rest belong to their owners, and a few I would not put my name next to, which seems like the honest reason to leave them out rather than a reason to inflate the count.