APIs are contracts. So why are Express contracts written in invisible ink?
Meaning: - req.body → could be literally anything - res.json() → returns whatever you hand it - TypeScript → just shrugs and says: any
So I built Meebo to fix this.
const router = TypedRouter(express.Router());
const schema = z.object({ id: z.number() })
router.post("/users", { response: schema }, (req, res) => { res.json({ id: 1 }); <--- this is now validated and typed });
You get: - Real TypeScript types from your Zod schemas - Runtime validation on every request - Auto-generated Swagger UI
medvedevil•1h ago
APIs are contracts. So why are Express contracts written in invisible ink?
Meaning: - req.body → could be literally anything - res.json() → returns whatever you hand it - TypeScript → just shrugs and says: any
So I built Meebo to fix this.
const router = TypedRouter(express.Router());
const schema = z.object({ id: z.number() })
router.post("/users", { response: schema }, (req, res) => { res.json({ id: 1 }); <--- this is now validated and typed });
You get: - Real TypeScript types from your Zod schemas - Runtime validation on every request - Auto-generated Swagger UI