Building with the Next.js App Router
The App Router changes how you think about layouts, data fetching, and rendering. Here's what I learned migrating a real project.
Read article→The App Router changes how you think about layouts, data fetching, and rendering. Here's what I learned migrating a real project.
Read article→Tailwind utility classes are great — but for themes that change at runtime, CSS custom properties are the right primitive.
Read article→That animated dashed border you see on hover? No canvas, no SVG, no JavaScript. Just four CSS gradients and a keyframe.
Read article→WCAG conformance is a floor, not a ceiling. Here's how to build experiences that genuinely include everyone.
Read article→Most keyboard navigation is an afterthought. Getting it right requires understanding focus management, not just tab order.
Read article→You don't need to be a screen reader power user to catch the most common issues. Here's a practical testing routine.
Read article→The 4.5:1 ratio is just the start. Here's how to build a color system that stays accessible across themes and states.
Read article→Before ARIA, before JavaScript, the right HTML element is always the best accessibility tool you have.
Read article→How to bake accessibility into a design system at the token level, so every component inherits it by default.
Read article→Patterns for building React components that work for everyone — from focus management to live regions.
Read article→Slow sites exclude users on low-end devices and slow networks. Performance work is inclusion work.
Read article→aria-label, aria-labelledby, aria-describedby — they all add accessible names but serve different purposes.
Read article→