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.