Notes from the field.
Engineering decisions, tradeoffs and lessons from building real-time interfaces and modern web platforms.
Theming Tailwind CSS v4 without a config file
My whole design system lives in one CSS file: OKLCH color tokens, an @theme inline block, keyframes and plugins, with no tailwind.config at all. How config-less Tailwind v4 works in practice.
A blog without MDX
I built this blog with plain TSX pages and a typed registry instead of MDX. Zero bundler configuration, full type safety, and file-convention metadata and Open Graph images per post.
Motion v12: per-element whileInView beats variant propagation
Scroll reveals kept landing in the wrong state when parents orchestrated children through variant propagation. One Reveal primitive with per-element whileInView fixed it for the whole site.
Fixing pnpm's packages field error on Vercel
A settings-only pnpm-workspace.yaml deployed fine locally but broke Vercel with "packages field missing or empty". The real cause was pnpm 9 versus 10, corepack, and a dead serverless region left over from an old project.
Building a portfolio with Next.js 16
How I rebuilt julientavernier.fr from scratch on Next.js 16, Tailwind v4 and Motion: the performance decisions, the animation architecture and a debugging war story.