Skip to content

← All projects

This website

Open, lean and bilingual: a static build with no cookies, no analytics and no third-party requests.

The brief

I wanted a site that does what I do for a living: open, lean and under my own control. No cookies, no analytics, nothing loaded from somebody else’s server.

It also had to work in English and French, because I work in both, and I had to be able to keep editing it myself.

Keeping it sovereign

I chose Astro because it builds plain HTML: the page is readable before any script runs. Tailwind and Untitled UI give me the design tokens, and the fonts are hosted on the site itself, so no request goes to a font provider.

It runs on OVHcloud, a French host, under a domain I own. Nothing ties the site there: the build is static and can move to any host. A strict content security policy blocks anything I didn’t plan, so the browser tells me when I get it wrong.

A place and a tool

I wanted it to feel like a place and a tool at the same time. The background is warm, with sage pods and soft contour lines. The content sits in small instrument panels with thin borders, mono labels and LEDs. The spec panel on this page is one of them.

The home page is a live control panel: a clock, the real position of the sun over Montpellier, how long I have worked in digital projects, and the weight of the page itself. All of it is worked out in your browser from the clock. Nothing is fetched.

Motion and accessibility

I wanted it alive without being tiring. Instruments move in small steps, background effects follow your scroll, and a switch in the header turns all of it off. It also follows your system’s reduced-motion setting by default.

I aim for WCAG 2.2 AA and I test for it, but I don’t claim the site is compliant: that takes real people and real assistive technology. I used native elements wherever I could, and colour never carries a meaning on its own.

Measuring it

I set budgets and made the build fail when I break them: about 135 KB for the home page against a limit of 230, no third-party request, no inline style. There are checks for accessibility and for French typography too, like the non-breaking space before a colon or a question mark.

They caught real mistakes. Inline styles passed on my development server and were blocked by the real policy once the site was live.

What went wrong, and what is left

Two effects used scroll features that Firefox-based browsers don’t have, so the Scope pipeline and the Experience timeline did nothing there. I rewrote them in script so they work everywhere. On a phone the page also lagged while scrolling, so the heavy background shaders now stay off on touch screens.

The 3D business card is switched off while I update it.

Spec

Period
10/2026 →
Role
Design and build
Status
Ongoing
Stack
Astro · Tailwind CSS · Untitled UI · TypeScript
Architecture
Static HTML first, with a little TypeScript for small instruments. One lazy WebGL shader that only loads where motion is on and the device can take it.
Privacy impact
No cookies, no analytics, no third-party requests.
Hosting
OVHcloud (France), static files; portable to any static host.