Bilingual Coaching & Connection Site
A bilingual (NL/EN) editorial site and PhysiqueAtlas showcase for a Belgian strength, nutrition, and mental performance coach — engineered to flip from a non-commercial connection card to a WER-compliant Eenmanszaak through config, not a second branch.
- Role
- Sole designer & developer — bilingual architecture, compliance guardrails, PhysiqueAtlas showcase
- Stack
- Astro 7
- Tailwind CSS v4
- Zod
- Cloudflare Workers
- WCAG 2.2 AA

Status
Unreleased: built and verified, waiting for the final client assets and the domain cutover.
Decisions
A two-stage toggle in YAML, not two branches
The site switches from Stage 1 (Personal) to Stage 2 (Eenmanszaak) in YAML — the siteMode flag plus legalForm and the KBO details — instead of a second branch kept alive while the KBO registration is pending.
A copy guard on protected titles
A recursive Zod superRefine regex rejects protected Belgian titles (“psycholoog”, “diëtist”) and off-brand terms (“bodybuilding”) at build time.
A zero-JS PhysiqueAtlas showcase
Four PhysiqueAtlas mobile screens, each with the app’s 5-tab bar, are rebuilt in pure HTML and CSS instead of shipping a React island.
What it cost
- One branch: both states must be schema-validated and tested continuously, so Stage 2 never rots.
- Copy guard: a copy edit fails the build the moment a forbidden term slips in.
- Zero-JS showcase: hand-built screens you must keep in sync with the app, in exchange for 0 KB of client framework JS.