Notes on building for the web — React, Next.js, and the things I learn along the way.
9 posts
Eleven NestJS APIs, and the guard stack grew the same way in each: two guards, then three, then seven. What that progression teaches about ordering, and the fail-open bug hiding where row-level security met a permissive default.
A walkthrough of making a portfolio fully bilingual (EN/ID) — subpath routing with next-intl, per-field content localization in Payload CMS, and the 404 and SEO gotchas I hit along the way.
A 500 is your backend telling you it hit something it could not handle yet. The distinction that matters is not whether they happen, but whether anyone is listening.
Every endpoint returning the same envelope, success or failure — the response shape worth settling on, and the global interceptor and exception filter that enforce it in NestJS.
Why the default flat src/ falls apart once a project has real features, and the module-driven layout that replaces it — one directory per feature, with common, config and database kept alongside.
From an empty terminal to a working custom endpoint: installing the Nest CLI, reading the generated project, and how the controller and service split the work between them.
A Next.js app that renders QR codes as you type and lets you restyle every part — dots, corners, colors, an embedded logo — then export to PNG, JPEG, SVG, or WEBP.
Building a type-safe registration form in Next.js with React Hook Form and a Zod schema — setup, validation, and wiring the component into a page, step by step.
A reusable AnimatedSection component that animates content in and out of the viewport based on scroll direction and position, built with Framer Motion and React hooks.