Rápido y medible
Motor Hono más capa de decoradores. En los benchmarks del repo gana terreno frente a Express y rinde cerca de Fastify con Zod.
Decoradores al estilo FastAPI, validación con Zod, documentación en /docs y helpers de test incluidos.
También en npm · MIT
Instalación
Añade reflect-metadata y activa experimentalDecorators
en tsconfig — detalles en la guía de inicio.
bun add veloce-ts zod reflect-metadata npm install veloce-ts zod reflect-metadata Qué incluye
Menos boilerplate en validación y documentación; más tiempo en la lógica de negocio.
Motor Hono más capa de decoradores. En los benchmarks del repo gana terreno frente a Express y rinde cerca de Fastify con Zod.
TypeScript de extremo a extremo con validación automática a partir de esquemas Zod.
Rutas y metadatos al estilo FastAPI: legibles y fáciles de mantener.
Especificación y Swagger UI generados desde tus controladores.
Inyección de dependencias integrada; encaja con Drizzle u otros proveedores.
Helpers para montar la app en pruebas y un cliente HTTP tipado sin abrir puerto.
Bun, Node.js, Deno y Cloudflare Workers con el mismo modelo.
Números
Mismo script para todos los frameworks (Bun, 6 000 peticiones, 50 conexiones). Los valores absolutos cambian según hardware; las tendencias se mantienen.
+57%
vs Express en POST con validación Zod
+20%
vs Fastify en el mismo escenario
~1–2 ms
overhead frente a Hono sin capa de decoradores
Snippet
import 'reflect-metadata' al inicio del
entrypoint; después, controladores con Zod y metadatos OpenAPI opcionales.
import 'reflect-metadata';
import {
Veloce,
Controller,
Get,
Post,
Body,
Summary,
HttpCode,
Tags,
} from 'veloce-ts';
import { z } from 'zod';
const UserSchema = z.object({
name: z.string().min(2),
email: z.string().email(),
});
type UserInput = z.infer<typeof UserSchema>;
@Controller('/users')
class UserController {
@Get('/')
@Summary('Listar usuarios')
@Tags('Users')
@HttpCode(200)
async getUsers() {
return [{ id: 1, name: 'Ana' }];
}
@Post('/')
@Summary('Crear usuario')
@Tags('Users')
async createUser(@Body(UserSchema) user: UserInput) {
return { id: 2, ...user };
}
}
const app = new Veloce();
app.include(UserController);
app.listen(3000); // Swagger en /docs
Validación automática · Tipos inferidos · OpenAPI en /docs
Repo
Tres proyectos bajo examples/, cada uno con README y
dependencias acotadas.
Tareas, categorías, usuarios, JWT, Drizzle y WebSocket de chat. Incluye tests con los helpers del paquete.
Catálogo con roles, autenticación y persistencia pensada para un flujo tipo e-commerce.
Salas y mensajes en tiempo real; autenticación y estructura lista para extender.
¿Otro caso de uso? Discussions