Skip to content
Neal Gysemans
All projects
2026Built — internal infrastructure & unreleased

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
Architecture diagram: NL and EN copy in YAML and Markdown passes a Zod copy guard, builds with Astro 7 and ships to Cloudflare Workers. Below it, three decisions: a Stage 1 to Stage 2 toggle in YAML, a build-time ban on protected Belgian titles, and PhysiqueAtlas mobile screens rebuilt in HTML and CSS with zero framework JS.

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.