Skip to content

Next.js, Sanity, Tailwind UI

One architect across the whole stack

A website is a front end, a content model, an analytics and consent layer, a data layer that feeds it real numbers, and the infrastructure underneath. Most projects buy those from different suppliers. I build all of them, which means there is nobody to coordinate and nothing to translate between.

Three sites built on the same stack: a bilingual heritage campaign, a champagne storefront, and a members' check-in kiosk

What usually goes wrongπŸ”—

A website is rarely one job. It needs a front end, a content model that a non-technical person can work in every day, an analytics and consent layer that is legally correct, a data layer that puts real figures on the page, and infrastructure that keeps it running.

Split across suppliers, each handoff becomes yours to manage. Three failures are close to universal: the content model is shaped around the developer rather than the editorial process, so publishing stays painful. The analytics were added after launch, so they measure what was easy to instrument rather than what the business needs. And the live figures on the page are typed in by hand, because the integration belonged to nobody.

Bought from a single agency, the failure mode inverts: a template rather than a fit, a platform you rent indefinitely, and a retainer to change your own copy.

One arrangement leaves you coordinating suppliers. The other leaves you renting your own website.

Scope

Six layers, one engagementπŸ”—

Full-stack web

Next.js, TypeScript, and a component library on Tailwind UI that carries between projects.

Content systems

Sanity, modelled around how the client actually writes rather than around the developer's convenience.

MarTech

Consent, analytics, conversion events and CRM, defined before launch rather than bolted on after.

Data engineering

The pipelines that put real numbers on the page instead of screenshots of numbers.

AI and ML

Retrieval, model serving, and the judgement to say when a project does not need either.

DevOps

What runs it, what it costs to run, and how it is handed over.

These are not six services to buy separately. They are why there is no coordination cost.

ProofπŸ”—

Sunset Fitness: Shopify as an operations backboneπŸ”—

A demonstrator built end to end against a real store. Passes sold as service products, member entitlement held on customer metafields, a QR kiosk that resolves access live, unlocks a door and writes the check-in back to the customer record, subscriptions, and B2B equipment sold off-storefront as draft orders. Multi-site.

The Sunset Fitness admin: members, access status, validity and check-in counts
Entitlement lives on the customer record in Shopify, not in a separate membership system. Status, the spot a pass covers, its expiry and the remaining sessions are all one read.
The door kiosk at a Sunset Fitness site, waiting for a pass to be scanned
The kiosk at the door. It resolves entitlement live, shows a full-screen result, and writes the check-in back to the customer record. Both surfaces are running: fitness-kiosk.guitton.co and fitness-door.guitton.co.

The subject is not the gym. It is that commerce, physical access control and entitlement logic were specified, built and handed over as one piece of work.

Atelier des Bleus Pastel: a bilingual campaign site the client runs herselfπŸ”—

Two editorial versions, fifteen blocks the client edits without a developer, live campaign figures read from an API, consent-gated analytics, and structured data so AI assistants describe it correctly. Built to a fixed public date. Read the case study.

The Atelier des Bleus Pastel homepage
Live at bleupasteldoccitanie.fr in French and English, each written rather than machine-translated.

What I find in thirty minutes, before the first callπŸ”—

Before a recent scaleup engagement, a review of the public site alone found: a home page weighing 5.9 MB, of which 1.4 MB was a single image; the GSAP animation library loaded twice, at two different versions, on every page including those with no animation; and a hard-coded exchange rate carrying a TODO comment, on a page that already called the live rate endpoint.

No access, no credentials, no discovery workshop. Reading a site before quoting on it is the difference between a proposal and a guess.

What the current arrangement actually costsπŸ”—

Website costs are usually quoted as a subscription, and the subscription is the smallest part of the bill. On a recent six-language marketing site, the analysis broke down like this.

The published price is not the priceπŸ”—

Localisation is billed per language, per month. Six languages means five secondary ones, and the incumbent platform charges for each. Past a certain page weight and traffic, bandwidth allowances are consumed and the plan changes tier. Beyond that, enterprise pricing is not published at all, so the figure on the website is a floor rather than a quote.

That is visible to the client and invisible to anyone outside, which is exactly why it never appears in a comparison.

The agency retainer sits on top, permanentlyπŸ”—

The subscription buys the platform. It does not buy a change to the site. Every new page, every campaign landing page, every additional language is billed by whoever maintains it, and that arrangement does not end, because it was never designed to.

The recurring cost is not the licence. It is the fact that changing your own website requires buying someone's time.

What replaces itπŸ”—

The build is handed to your own engineering team. Conventional foundations they already know, in a repository they own, with a seventh language as one line of configuration rather than a quote. Marketing publishes without queueing behind engineering, and engineering changes the site without queueing behind an agency.

Hosting and subscriptions stay in your name, at ordinary published rates, because a provider who owns your hosting owns you. The fixed price below is the last invoice, not the first of a series.

Three options, fixed price

Architecture decision
4β€―500 €fixed, excl. VAT
  • Two working prototypes, on a real page of your site with your real data
  • Put in front of one engineer and one marketer, not presented as an opinion
  • A written recommendation: what was tested, by whom, against which criteria
  • An audit of the existing site: dependencies, page weight, breakage risks at cutover
  • A migration plan in independently priced units

Standalone. It is a decision, not a build, and buying it commits you to nothing further.

Platform

Most chosen

10β€―000 €fixed, excl. VAT
  • The site itself, on infrastructure you own
  • Starts locally in one command, on a working machine, with no prior configuration
  • Edited with an AI assistant in the loop, with prompts and guardrails supplied
  • Multilingual, with a new language as configuration rather than a project
  • Search and generative engine readiness built in: sitemap, structured data, llms.txt, markdown for AI crawlers
  • Delivered on a private address, so nothing is decided before you have seen it
Two teams autonomous
22β€―500 €fixed, excl. VAT
  • Everything in Platform, plus go-live and handover
  • Every address indexed before cutover verified to resolve after it
  • A typed client for your own API, with defined behaviour when it is unavailable
  • A library of prompts and procedures for real tasks: an article, a section, a language
  • CI guardrails: anything degrading search visibility, languages or data is blocked before publication
  • A full audit at handover: markup, metadata, payload, accessibility to WCAG AA, Core Web Vitals. Pass or fail, ranked, not a score
  • One onboarding session per population, engineering and marketing

Fixed price, not an estimate

If the work takes longer than I judged, that is mine to absorb. And you own the result: conventional, widely used foundations, so your team can take it over without depending on me.

Who you actually getπŸ”—

Two people. One technical, one marketing. You work with both.

No account manager, no junior, no subcontractor. That is what keeps the fixed prices above achievable, and it is also the limit: this practice runs few projects at a time.

Questions

Is this an agency?

No. It is a two-person practice. If you need thirty people, you need an agency, and I will say so.

What if we already have a design?

Bring it. Composing from an existing component library is faster than copying a design pixel for pixel, so a redesign during the build costs less than doing it twice.

Who hosts it?

You do, in your name. Hosting and subscriptions are yours and are not included in the prices above. That is deliberate: a provider who owns your hosting owns you.

Can our engineers take it over?

That is the point of the third option. Conventional foundations, documented, with guardrails that stop a later handover degrading the site undetected.

Do you do commerce?

Yes, on Shopify. Different stack, same practice. See the champagne work.

Thirty minutes, no commitment

Send the URL. I will have read the site before we speak.