ngandu.hashnode.devBuilding a Consistent Data‑Fetching Layer in React with TanStack QueryFetching data in React can range from a simple fetch call inside a component to sophisticated RPC frameworks. In small apps, you might sprinkle useQuery calls throughout your components. As an app grows, you might extract those calls into custom hook...Dec 4, 2025·10 min read
ngandu.hashnode.devWhy OFFSET Failed Us: Implementing Keyset Pagination End‑to‑End with PostgreSQL, Drizzle, tRPC, and Next.js 16The day we crossed the hundred‑thousand‑row mark was the day the cracks began to show. Our once‑snappy feed—built on a blissfully simple LIMIT … OFFSET … query—started behaving erratically. As new rows were inserted faster than our users could scroll...Nov 17, 2025·9 min read
ngandu.hashnode.devMonorepo UI Sharing with Next.js 16 and shadcn/ui (Bun + Turborepo)Sharing UI components across applications in a monorepo sounds trivial until you collide with the modern frontend stack: ESM-only packages, Tailwind v4’s single-file CSS engine, Next.js 16’s strict module graph, and the ergonomics of shadcn/ui. This ...Nov 11, 2025·4 min read
ngandu.hashnode.devHow to Change Algorithms in Symfony without Code Modifications: The Strategy PatternEver been in a situation where you had to switch between multiple behaviors in your application, only to end up with endless if/else or switch blocks? Not only does it look ugly, but it also becomes harder to maintain as the application grows. Think ...Sep 22, 2025·5 min read
ngandu.hashnode.devGetting Started with Value Objects in SymfonyIn the realm of modern PHP development, where clarity and precision are paramount, relying solely on primitive types like strings and integers to represent crucial business data can introduce a cascade of problems. As applications evolve and become m...Mar 17, 2025·8 min read