Architecture
npm-workspaces monorepo. Astro on Cloudflare Pages: seven surfaces, seven Pages projects. Shared token, UI, and MDX packages.
Verified from the repo, not from memory. Every layer below is in production today across wojciech.io and its subdomains. If a tool is on this page, it pays rent.
01 · Source
Monorepo, branch-protected main
02 · CI gate
Vitest · Playwright · Semgrep · CodeQL
03 · Build
Static + Pages Functions
04 · Deploy
Wrangler → 7 surfaces, only on green CI
05 · Edge
CDN · WAF · rate limiting
Deploy only fires on green CI (workflow_run gate). No green, no ship.
npm-workspaces monorepo. Astro on Cloudflare Pages: seven surfaces, seven Pages projects. Shared token, UI, and MDX packages.
Tailwind CSS 4 driven by CSS custom-property tokens. Geist for type. Lenis + Motion for motion. Pagefind for static search.
Cloudflare Pages Functions for gated surfaces. Workers for the growthhub cron. Terraform manages Pages projects and domains. Node 24 in CI.
Astro content collections for insights, work, and testimonials. 9 languages across CV and SEO surfaces: 7 fully translated locale homepages on top of EN, plus Arabic from its own RTL pages.
Nothing loads before consent, not one tag. PostHog on EU residency carries product analytics, GA4 sends pageviews only, Sentry catches errors. Cloudflare Web Analytics is wired but dormant: its token is unset, so no beacon is emitted.
Vitest for units and coverage. Playwright across Chromium + WebKit for smoke, SEO, a11y, and broken-link checks. Daily smoke against production.
CI on every push and PR. Deploy runs only on CI success via workflow_run, shipping site and subdomains in parallel through Wrangler. Commitlint enforced.
Branch protection with required checks. Strict CSP, HSTS preload, XFO DENY. Auth gates use HMAC-SHA256 signed cookies with timing-safe compares and per-IP rate limiting.
Azure Static Web Apps holds a weekly cold standby. Failover is operator-triggered, auto-detects health, then flips DNS via the Cloudflare API. Rollback is a non-destructive git revert.
Claude Code implements. Codex reviews. Strategy and go/no-go stay human. Merge once docs and code agree.
If something on the page is interesting in context of what you are building, write me and we will look at it together.