4d ago · 10 min read · This is Part 5 of the AI Engineering with TypeScript series. Prerequisites: Part 1 · Part 2 · Part 3 · Part 4 Stack: Node.js 20+ · Express 5 · @modelcontextprotocol/sdk v1.x · Zod · TypeScript 5.x · D
Join discussionApr 27 · 5 min read · TL;DR Contract testing prevents frontend and backend drift. Tools like Pact automate this but introduce additional complexity and duplicate definitions. Shared Zod schemas offer a simpler alternative
Join discussionApr 21 · 5 min read · Originally published at recca0120.github.io Do you validate the data your backend API returns? Most people just use as to cast the type and hope the data matches expectations. Zod lets you define a schema once and get both runtime validation and Type...
Join discussionApr 13 · 11 min read · Here's a class of bug I wrote in my first LLM app and then again, on a different team, six months later. I wrote a feature that asked the model to classify a user's message into one of three categories — billing, technical, other — and return it as J...
Join discussionApr 6 · 12 min read · You cast the API response to any to stop TypeScript complaining. It worked. Now a field changed shape three months later and the bug is in production. Here's how to type messy API responses properly —
Join discussion
Mar 29 · 2 min read · This post was created with AI assistance and reviewed for accuracy before publishing. Trending in 2026: Model Context Protocol (MCP) is the de facto way teams expose tools (files, APIs, databases) to AI clients in a consistent way. Anthropic open-sou...
Join discussionMar 25 · 4 min read · The Bug: Global State Corruption git-with-intent runs AI agents that interact with LLM providers. Each tenant registers their own custom providers — API keys, model configurations, cost metadata. The CustomProviderRegistry managed these registrations...
Join discussionMar 18 · 1 min read · Users wanted to register with just a phone number, but the backend required an email. Background Our LINE-integrated e-commerce site targets users who often do not want to enter an email. The form said enter your phone number but returned 400. The Fi...
Join discussion