Cuando construís APIs todos los días, empezás a notar los mismos problemas una y otra vez.
Validación por un lado, documentación por otro. Schemas que se desincronican del código. Herramientas que resuelven una cosa pero te obligan a pegar tres librerías más para tener lo básico. Setup que debería llevar minutos y termina llevando horas.
No es que los frameworks existentes sean malos — los usamos, los valoramos. Pero después de usar Express, Fastify, Hono y Elysia en proyectos reales, había un patrón claro: siempre terminábamos resolviendo los mismos gaps a mano.
Así nació CrumbJS.
Qué es CrumbJS
CrumbJS es un framework para construir APIs en TypeScript, diseñado para que validación, documentación y tipado no sean cosas que agregás después — sino parte del flujo desde el primer endpoint.
Corre sobre Bun para deployments full-server y tiene una versión dedicada para Cloudflare Workers (@crumbjs/worker) que lleva las mismas capacidades al edge.
Es open source. Está en GitHub. Y es lo que usamos internamente para los proyectos que construimos.
Los problemas concretos que resuelve
1. Validación como parte del framework, no como plugin
La validación no debería requerir un zoo de middlewares ni 500 decoradores. CrumbJS usa Zod como motor de validación — schemas expresivos, reutilizables entre backend y frontend, con seguridad en runtime incluida.
Definís un schema una vez. Ese schema valida el request, tipifica tu handler y documenta tu API. Una sola fuente de verdad.
2. OpenAPI sin setup adicional
Toda API mediana-a-grande termina necesitando documentación. Con la mayoría de los frameworks, eso significa instalar herramientas de terceros que no siempre evolucionan en sincronía con tu código.
En CrumbJS, OpenAPI se genera automáticamente desde tus schemas de validación. Tus docs nunca se desalinean de tu implementación, porque son la misma cosa.
3. Type-safety end-to-end sin costo en runtime
CrumbJS incluye generación de un cliente tipado basado en tus schemas OpenAPI. Emite un archivo .d.ts durante desarrollo — tu frontend (o cualquier otro servicio) consume esos tipos con autocomplete, errores predecibles y refactors seguros.
Sin codegen en producción. Sin costo en runtime. Una definición, tipado completo en ambos lados.
4. Features enterprise-ready incluidas
No queríamos un framework que resuelva lo básico y te deje solo para lo que importa. CrumbJS viene con addons listos para producción:
- @crumbjs/mongo — Auto-CRUD sobre MongoDB
- Queues — Procesamiento async integrado con BullMQ
- Middlewares incluidos — CORS, secure headers, signals
- Y más en camino
5. Pragmático, no dogmático
CrumbJS combina lo mejor de los enfoques modernos (validación + inferencia + documentación en un solo lugar, al estilo Elysia) con patrones clásicos que siguen funcionando bien (middlewares scoped y globales à la Express).
Solo adoptamos lo que realmente ayuda a llegar a producción más rápido.
Cómo se ve en la práctica
Crear un proyecto nuevo:
bun create crumbjs@latest api
Para Cloudflare Workers:
npm create crumbjs-worker@latest api
Definir una ruta con validación, tipado y documentación en un solo lugar:
import { App, z } from "@crumbjs/core";
const app = new App();
app.prefix("api");
app.post(
"/posts",
async ({ body, setStatus }) => {
// body está automáticamente tipado según el schema
setStatus(201);
return body;
},
{
type: "application/json",
body: z.object({
title: z.string().min(10).max(50),
slug: z.string().regex(/^[a-z0-9-]+$/i).optional(),
content: z.string().min(150),
}),
summary: "Create a post",
tags: ["Posts"],
}
);
app.serve();
Con eso ya tenés:
- Validación automática del body con errores descriptivos
- Documentación OpenAPI accesible en
/reference - Tipado inferido en el handler — sin
any, sin casts manuales - Cliente tipado generado para tu frontend
Para qué tipo de soluciones sirve
CrumbJS no intenta ser un framework para todo. Está diseñado para un caso de uso concreto: APIs que necesitan ir a producción rápido, con estándares profesionales.
Casos donde tiene sentido:
- MVPs y SaaS que necesitan una API validada, documentada y tipada desde el día 0
- Microservicios que corren sobre Bun o Cloudflare Workers
- APIs internas donde la documentación automática elimina fricción entre equipos
- Proyectos con frontend y backend en TypeScript que quieren type-safety real end-to-end, no decorativa
Por qué open source
Creemos que las herramientas que resuelven problemas reales deberían ser accesibles para todos.
CrumbJS nació de necesidades concretas que encontramos construyendo productos para nuestros clientes. Lo que empezó como una herramienta interna se convirtió en algo que creemos puede ayudar a otros equipos que enfrentan los mismos desafíos.
No es un proyecto terminado — es un proyecto en movimiento. Cada feature que agregamos viene de un caso de uso real, no de una wishlist teórica.
La visión es clara: que CrumbJS sea el framework go-to para APIs enterprise-ready en TypeScript moderno.
Cómo sumarte
- 🔗 Web: crumbjs.com
- 📦 GitHub: github.com/tuplescompany/crumbjs
- ☕ Apoyar el proyecto: buymeacoffee.com/crumbjs
Si construís APIs en TypeScript, probalo. Si te sirve, compartilo. Si encontrás algo que mejorar, abrí un issue.
Es un pequeño aporte. Pero los pequeños aportes son los que construyen comunidad.
¿Querés implementar este tipo de arquitectura?
En TUPLES IT diseñamos y construimos stacks modernos sobre Cloudflare Workers, serverless y edge computing.