Engineering
Zod Beyond Validation
- Jiyu Yan
- Engineering
- 17 Apr, 2026
Zod is usually introduced as a validation library. That is true, but the more useful idea is boundary definition. A TypeScript type only helps after data is already inside the pro
read moreLocalization in Product Apps
- Jiyu Yan
- Engineering
- 20 Mar, 2026
Localization is not only replacing English strings with another language. In a product app, language touches workflow. It changes labels, validation messages, dates, empty states, permissions copy, d
read morePragmatic Drag and Drop for Real Ordering Tasks
- Jiyu Yan
- Engineering
- 13 Feb, 2026
Drag and drop is easy to add for a demo and harder to make reliable for real work. The product question is not "can the item move on screen?" The question is whether the user can safely change an ord
read moreMCP as a Safe AI Integration Boundary
- Jiyu Yan
- Engineering
- 09 Jan, 2026
MCP is interesting because it makes AI integrations feel less like prompt magic and more like software boundaries. That is the part I care about. A model should no
read moreshadcn-Style UI as an Owned Product System
- Jiyu Yan
- Engineering
- 05 Dec, 2025
I like copied UI primitives because they make the component library feel like part of the app, not something the app is borrowing. That is the part of the shadcn/ui-style ap
read moreAstro for Documentation and a Professional Site
- Jiyu Yan
- Engineering
- 31 Oct, 2025
I use Astro because this site is mostly writing. I do not need a heavy app framework for pages that should load fast and be easy to edit. That sounds simple, but it is the mai
read moreDense Operational UI with Tables and Editors
- Jiyu Yan
- Engineering
- 26 Sep, 2025
Sometimes a simple form is the wrong UI. If the user needs to compare many values and make careful edits, a table can be kinder than a long page of inputs. Dense UI has a bad reputation when it is us
read moreVercel AI SDK with Explicit Tool Boundaries
- Jiyu Yan
- Engineering
- 22 Aug, 2025
The risky part of an AI feature is not the chat UI. The risky part is what the chat is allowed to do. It is easy to make an assistant feel powerful by giving it tools. With something like the [Vercel
read moreTesting Product Workflows with Vitest and Playwright
- Jiyu Yan
- Engineering
- 18 Jul, 2025
I do not want a test suite that only proves functions work. I want it to protect the workflows that would hurt if they broke. That does not mean every rule needs a browser test. Browser tests are val
read moreZod, OpenAPI, and Swagger for API Contracts
- Jiyu Yan
- Engineering
- 13 Jun, 2025
A public API is not just backend code. It is a product surface for another developer. That means the contract has to be readable. It also has to be enforced at runtime. Types in the app are useful, b
read morepg-boss for Durable Background Jobs
- Jiyu Yan
- Engineering
- 09 May, 2025
The customer problem was not "we need a queue". The problem was that a slow operation made the user wait with no clear answer. That distinction matters. A queue is an implementation detail. The produ
read morePrisma and PostgreSQL as the Product Source of Truth
- Jiyu Yan
- Engineering
- 04 Apr, 2025
I do not think of PostgreSQL as only infrastructure. In a product app, it is where the product remembers what happened. That makes database design a product decision. I
read moreReact Router for Full-Stack Product Workflows
- Jiyu Yan
- Engineering
- 28 Feb, 2025
A route is not only a URL. In a product app, a route often represents a task the user is trying to finish. That sounds obvious, but it changes how I design the code. A settings page that starts an im
read moreVertical Slice Architecture with Dependency-Cruiser
- Jiyu Yan
- Engineering
- 24 Jan, 2025
I like vertical slices because they make a feature easier to delete, move, or review. The folder structure is not the main value. The value is that the code for one workflow is not spread across ten u
read more