This site
The site you are reading: Astro and Tailwind, two languages held together by tests, a CV and a score reader rendered from the same content.
A portfolio is a project like any other, and this one ended up becoming a real one. It is written in Astro and Tailwind, fully rendered at build time and deployed on Vercel. Each project is a Markdown page in two languages; the rest of the site follows from it.
The choice that served most: editorial rules are written as tests rather than displayed somewhere. Facts must agree between French and English, non-breaking spaces are placed automatically and checked afterwards, a page declared a draft disappears from the public site and the sitemap, and a technology cited by a page but absent from the reference list fails the build. A rule you have to remember to apply ends up not being applied.
Two outputs start from the same content. The CV is a page of the site, printed to PDF by a script that first simulates pagination in the browser to know the page count and how full the last one is; the two-page cut is a selection rule, not an accident. And the music page scrolls a score engraved as a continuous ribbon, synchronised to the audio, from the piece’s MuseScore file.
The rest is maintenance that is measured rather than declared: page images are captured by a script, so that a new capture six months later keeps the same framing; contrasts are measured on the real images and not on the mockup; performance and accessibility are audited page by page.
The tools, in full. Astro 7 and Tailwind 4 in TypeScript, self-hosted fonts (Cinzel, Marcellus SC, Sorts Mill Goudy); Vitest for the editorial rules; Playwright for everything that goes through a real browser, the project captures, the CV PDF, the contrast measurements; sharp for the image pipeline; MuseScore for the engraving, the audio rendering and the timing of each bar; Vercel for hosting. The illustrations that are neither captures nor photos, the domain covers and the pages with no software to show, are generated locally by local-factory: ComfyUI and FLUX.1 dev on the machine’s graphics card, with a seed noted per image so it can be redone. The oldest ones come from Gemini. The code is written with Claude Code, inside the review loop described on the assisted development page.
