yws.lu: rebuilding a Luxembourg non-profit's site from Next.js to Astro in one day
Case study: migrating a Next.js site with 3D to static Astro in one day with Claude Code. Lab Lighthouse on phones: 23-28 to 99-100.
Notes from building web and mobile products: AI-assisted development with Claude Code, i18n with Lingui, performance and accessibility. With sources.
Case study: migrating a Next.js site with 3D to static Astro in one day with Claude Code. Lab Lighthouse on phones: 23-28 to 99-100.
Case study: why I swapped my 3D portfolio for a poster. The research, the sites I learned from, every version, and shaders that never get in the way.
Scarcity, social proof, anchors, defaults and progress bars, built honestly in code, and where EU and Polish law draws the line on dark patterns.
One Vercel Function next to a static Astro build: a message-first form, three bot checks, EmailJS from the server, no-JS support and one ESM bug.
How this site serves English, Polish and Spanish from one static Astro build: locale routes, translated slugs, hreflang and a switch that keeps your page.
Phones have no cursor. How this site gates hover with (hover: hover) and (pointer: fine) and gives every hover a tap, focus or scroll twin.
My CV page and its PDFs in English, Polish and Spanish come from one TypeScript file: Playwright prints a designed A4 sheet, and a test fails on drift.
Mobile Lighthouse, 3 runs each, on 16 well-known developer portfolios: 3D median 35.5, minimal 74.5. The method, the results and what the score misses.
How I built and shipped Linkoglot, an AI language app, alone: Expo, Supabase, RevenueCat, Lingui in 30 languages, and what both app stores ask for.
My old three.js portfolio scored 34 on mobile Lighthouse. What made it slow, and a checklist for a 3D site that stays fast on phones.
How I stop Claude Code from forgetting: a foldered markdown wiki, a routing table, a lessons file and three hooks that reload them after compaction.
When Astro fits a portfolio or landing page and when Next.js is the right call, with HTTP Archive Core Web Vitals data and this site's measurements.
When to use CLAUDE.md, a skill, a hook, an MCP server or a subagent in Claude Code: the official docs, plus the real setup that built this site.
Cookieless is not automatically consent-free. What GDPR and art. 399 of Poland's electronic communications law say, and three positions you can defend.
How my name runs edge to edge on this site with no JavaScript: font metrics measured at build time, the wdth axis, cqi units and font-stretch.
Lingui and i18next compared from their docs and npm data: message format, macros, compile step, bundle size, plurals, TypeScript and React Native.
How this site handles motion: a WCAG 2.2.2 pause control, prefers-reduced-motion, loops that stop offscreen and reveals that never hide content.
How to machine-translate Lingui .po catalogs with an LLM, what breaks (placeholders, plurals, tone) and the checks to run before a catalog ships.
Nothing matches. Try fewer words or another topic.