All projects
TypeScript, Next.js
Kiroku
A focused TypeScript/Next.js product surface — shipping UI and flows with the same correctness bias as the rest of the stack.
Problem
Needed a clean product shell where interaction quality mattered as much as the API.
Why X, not Y
Why Next.js App Router
Server components and route-level data loading without a separate BFF ceremony.
Why TypeScript end-to-end
Fewer “it worked in the browser” surprises when the surface grows.
If I rebuilt it today
I’d extract shared UI primitives earlier — growth made the component boundaries obvious only after the fact.