Aplicaciones de ejemplo oficiales para core, adaptadores, persistencia, cache, scheduling y queues.
Usa las aplicaciones de ejemplo como la ruta más corta hacia el framework. Muestran las combinaciones principales del runtime publicadas en el monorepo original, incluidos ejemplos centrados en mailer, cache, scheduler y queues, y los endpoints que expone cada una.
Usa 01-new_app para entender el arranque mínimo con node-http y el flujo de registro de rutas.
Cambia adaptadores
Compara los ejemplos de Express y Fastify para ver cómo los controladores permanecen estables mientras cambia el servidor.
Añade integraciones
Pasa a los ejemplos de TypeORM, security, mailer, cache, scheduler y queues cuando necesites persistencia, rutas protegidas, trabajo en segundo plano o flujos de entrega asíncrona.
Catálogo
Aplicaciones de referencia incluidas en el monorepo
No hay ejemplos que coincidan con el filtro actual.
samples/01-new_app
01-new_app
La aplicación más pequeña posible. Demuestra que core puede arrancar un servidor y enrutar un endpoint de salud sin adaptador externo.
node-http + core
Endpoints
GET /health
Flujo habitual
Instala las dependencias dentro de la carpeta del ejemplo.
Ejecuta npm start para arrancar CreateApplication() con node-http.
Llama a /health para comprobar el registro del controlador y la configuración del logger.
samples/02-express_app
02-express_app
Muestra cómo una app Express existente se envuelve con ExpressAdapter mientras los controladores siguen devolviendo valores nativos del framework.
core + express-http
Endpoints
GET /
GET /health
Flujo habitual
Crea una instancia de Express y habilita por tu cuenta body parsing u otros middlewares.
Pasa la instancia a new ExpressAdapter(expressApp).
Renderiza una home basada en plantillas y expone un endpoint JSON de salud.
samples/03-fastify_app
03-fastify_app
Demuestra la portabilidad del adaptador: el mismo estilo de controlador funciona sobre Fastify sin cambiar la lógica de negocio.
core + fastify-http
Endpoints
GET /
GET /health
Flujo habitual
Crea una instancia de Fastify con sus propias opciones de logger/runtime.
Envuélvela con FastifyAdapter.
Reutiliza las mismas convenciones de controlador usadas por Express y node-http.
samples/04-typeorm_app
04-typeorm_app
Añade estado persistente sobre el adaptador de Fastify. El ejemplo siembra usuarios y demuestra el registro del ciclo de vida del datasource.
fastify-http + typeorm
Endpoints
GET /users/
POST /users/seed
GET /health/
Flujo habitual
Decora una clase de configuración del datasource con TypeOrmDataSource().
Arranca la aplicación con FastifyAdapter.
Usa repositorios o datasources inyectados dentro de servicios para consultar y mutar el estado.
samples/06-security_app
06-security_app
Demuestra flujos JWT y JWE sin un adaptador web completo, centrándose en el registro de estrategias y controladores protegidos.
node-http + security
Endpoints
GET /health/
GET /auth/jwt/admin
GET /me/
GET /admin/
GET /encrypted/
Flujo habitual
Registra estrategias JWT y JWE antes de CreateApplication().
Emite un token de demostración desde /auth/jwt/admin.
Usa Authorization: Bearer <token> contra /me/ y /admin/.
samples/07-security_express_app
07-security_express_app
Combina la integración de Express con decoradores de security y el módulo mailer, mostrando endpoints de perfil autenticado además de correos transaccionales y notificaciones protegidas.
express-http + security + mailer
Endpoints
GET /health/
GET /auth/jwt/admin
GET /me/
POST /me/notify
GET /admin/
GET /encrypted/
Flujo habitual
Crea una app Express, registra estrategias JWT y JWE, y después registra transports y plantillas de correo durante el arranque.
Obtén un token de demostración desde /auth/jwt/admin y llama a /me/ con Authorization: Bearer <token>.
Haz POST a /me/notify para renderizar plantillas de correo del perfil y enviarlas mediante los transports default y notifications.
samples/08-email_express_app
08-email_express_app
Ejemplo dedicado a mailer que muestra transports con nombre, plantillas de correo basadas en EJS y servicios gestionados por DI que envían mensajes de bienvenida y campaña.
express-http + mailer
Endpoints
GET /health/
GET /email/
POST /email/welcome
POST /email/campaign
Flujo habitual
Registra los transports default y notifications, y después conecta el renderer ejs-file y las plantillas de correo.
Inicia la app Express mediante CreateApplication() e inspecciona /email/ para ver el contrato del ejemplo.
Haz POST a /email/welcome o /email/campaign para renderizar plantillas y enviarlas a través del transporter configurado.
samples/09-internationalization_app
09-internationalization_app
Muestra resolución de locale por petición, helpers de traducción, formatters personalizados y carga diferida de namespaces sobre el adaptador node-http por defecto.
node-http + internationalization
Endpoints
GET /health
GET /i18n
GET /i18n?locale=es-ES&name=ada&items=3&amount=1499.95
GET /i18n/checkout?locale=en-US&items=2&amount=249.5
Flujo habitual
Configura el locale por defecto, el fallback de locale y los formatters integrados antes de CreateApplication().
Abre /i18n para inspeccionar mensajes traducidos, el estado del locale y los namespaces cargados.
Accede a /i18n/checkout para activar la carga diferida de namespaces y el formateo localizado de números, moneda y fecha-hora.
samples/10-internationalization_express_app
10-internationalization_express_app
Combina renderizado de páginas localizadas con el adaptador de Express, incluyendo cambio de locale por query, soporte de Accept-Language y traducciones diferidas para checkout.
express-http + internationalization
Endpoints
GET /?locale=en-US&name=ada&items=3&amount=1499.95
GET /?locale=es-ES&name=ada&items=3&amount=1499.95
GET /checkout?locale=es-ES&name=ada&items=2&amount=249.5
GET /health
Flujo habitual
Configura catálogos de locale y formatters personalizados, y después arranca una app Express mediante ExpressAdapter.
Abre la página principal localizada y cambia entre en-US y es-ES mediante parámetros de consulta o Accept-Language.
Sigue la ruta de checkout para probar la carga diferida de namespaces con vistas renderizadas en el servidor.
samples/11-scheduler_app
11-scheduler_app
Demuestra trabajos programados integrados con el ciclo de vida de xtask, incluyendo ejecución en arranque, grupos con nombre, reintentos y endpoints de inspección en tiempo de ejecución.
node-http + scheduler
Endpoints
GET /health
GET /scheduler/status
GET /scheduler/groups
GET /scheduler/run-maintenance
Flujo habitual
Inicia el ejemplo para que CreateApplication() descubra los métodos programados después de que arranque el contenedor.
Abre /scheduler/status para inspeccionar metadata de trabajos, contadores, fallos y eventos recientes.
Llama a /scheduler/run-maintenance para disparar manualmente un grupo de trabajos con nombre y observar el comportamiento de reintento.
samples/12-cache_app
12-cache_app
Introduces cache models, method decorators, repository injection, and the built-in cache management controller on the default node-http adapter.
node-http + cache
Endpoints
GET /cache/products/:id
GET /cache/products/:id/inspect
GET /cache/products/:id/refresh
GET /cache/products/:id/evict
GET /ops/cache/models
Flujo habitual
Configure the cache package with memory storage defaults and register a ProductCacheModel before CreateApplication().
Call the product, refresh, and evict endpoints to observe Cacheable, CachePut, and CacheEvict behavior.
Inspect /ops/cache/models and /cache/products/:id/inspect to verify repository state and generated admin metadata.
samples/13-cache_redis_app
13-cache_redis_app
Switches the same caching model to Redis so the decorators and repository APIs stay the same while storage moves out of process.
node-http + cache + redis
Endpoints
GET /cache/products/:id
GET /cache/products/:id/inspect
GET /cache/products/:id/refresh
GET /cache/products/:id/evict
GET /ops/cache/models
Flujo habitual
Configure a Redis-backed cache model or client factory before boot so the lifecycle manager can open the store.
Reuse the same service decorators and repository injection patterns from the memory sample.
Use the inspect and admin endpoints to confirm Redis-backed entries, TTL behavior, and explicit eviction paths.
samples/14-http_cache_web_app
14-http_cache_web_app
Shows browser-facing cache policies on rendered pages and JSON endpoints, including ETag, Last-Modified, stale-while-revalidate, and preview no-store behavior.
express-http + cache
Endpoints
GET /
GET /articles/:slug
GET /api/articles/:slug
GET /preview
GET /ops/cache/http/routes
Flujo habitual
Define package-wide httpCacheDefaults and then override them per route with CacheView, BrowserCache, and NoStore decorators.
Request the same pages with conditional headers to observe ETag and Last-Modified handling on cached responses.
Inspect /ops/cache/http/routes to verify the effective Cache-Control policy and validators resolved for each route.
samples/15-fastify_http_cache_web_app
15-fastify_http_cache_web_app
Ports the browser cache sample to Fastify to show that the same cache decorators and admin controller work across adapters.
fastify-http + cache
Endpoints
GET /
GET /articles/:slug
GET /api/articles/:slug
GET /preview
GET /ops/cache/http/routes
Flujo habitual
Boot the app through FastifyAdapter while keeping the same CacheView, BrowserCache, NoStore, and management-controller setup.
Compare the page and API endpoints with the Express version to confirm adapter-portable HTTP cache behavior.
Use the admin routes to inspect merged cache policy, validators, and route metadata under Fastify as well.
samples/16-queues_memory_app
16-queues_memory_app
Introduce el paquete queues con el transporte integrado en memoria, consumidores decorados, listeners por patrones y flujos de publicación al devolver resultados.
node-http + queues
Endpoints
GET /queues/
GET /queues/status
POST /queues/orders
POST /queues/orders/:id/complete
Flujo habitual
Configura configureQueues() con un transporte memory explícito y registerInMemoryQueueTransport() antes de CreateApplication().
Haz POST a /queues/orders para publicar un mensaje y ver cómo los consumidores QueueHandler y QueuePattern actualizan el registro de eventos en memoria.
Haz POST a /queues/orders/:id/complete para probar PublishToQueue() y observar flujos locales de colas encadenados.
samples/17-queues_rabbitmq_app
17-queues_rabbitmq_app
Traslada el mismo modelo de colas a RabbitMQ, añadiendo routing por topics, consumidores en competencia, reintentos y gestión de dead-letter mediante la utilidad del broker.
node-http + queues + rabbitmq
Endpoints
GET /health
GET /queues/
GET /queues/status
POST /queues/orders
POST /queues/orders/:id/fail
POST /queues/orders/:id/complete
Flujo habitual
Configura el transporte por defecto con createRabbitMqTransport() y registerQueueTransport() antes de CreateApplication().
Publica pedidos mediante /queues/orders y /queues/orders/:id/fail para inspeccionar reintentos, listeners de auditoría y el dead-letter routing.
Abre /queues/status para inspeccionar consumidores iniciados, metadata de transports, grupos, ajustes de reintento y eventos recientes.
samples/19-cqrs_app
19-cqrs_app
Shows a full CQRS flow with separate SQLite write and read databases, injected buses, idempotent commands, event-driven projections, and projection rebuild support.
node-http + typeorm + cqrs
Endpoints
GET /cqrs/
GET /cqrs/users
GET /cqrs/debug/state
POST /cqrs/users
POST /cqrs/users/:id/onboard
POST /cqrs/projections/rebuild
Flujo habitual
Register two TypeORM datasources and bind them to @Cqrs(...) as write-db and read-db before CreateApplication().
Use CommandBus and QueryBus from the controller to create users, inspect read models, and trigger onboarding commands.
Inspect /cqrs/debug/state and POST /cqrs/projections/rebuild to verify projection handlers, rebuilders, and read-model synchronization.
samples/20-cqrs_postgres_replication_app
20-cqrs_postgres_replication_app
Extends the CQRS sample to Postgres master and replica datasources so writes stay on the primary, reads come from the replica, and projection rebuild tooling remains part of the same lifecycle.
node-http + typeorm + cqrs + postgres
Endpoints
GET /cqrs/
GET /cqrs/users
GET /cqrs/debug/state
POST /cqrs/users
POST /cqrs/users/:id/rename
POST /cqrs/projections/rebuild
Flujo habitual
Configure @xtaskjs/typeorm datasources for pg-master and pg-slave, then point @Cqrs(...) at those aliases before bootstrap.
Route write-side commands through CommandBus while query handlers and injected read repositories use the replica datasource.
Use the debug and rebuild endpoints to inspect replication-aware state, registered projection rebuilders, and lifecycle-managed read-model recovery.
samples/21-event_source_rabbitmq_app
21-event_source_rabbitmq_app
Demonstrates event-sourced aggregate writes backed by a SQLite event store, in-process projection updates, and RabbitMQ publication of stored domain events.
Configure @EventSource(...) with createTypeOrmEventStore() and createQueueEventPublisher(), then register a RabbitMQ transport before CreateApplication().
Create and evolve aggregates through the POST endpoints, then inspect /event-source/streams/:id to verify replayed state and persisted event history.
Open /event-source/status to inspect projection counts, started queue consumers, registered transports, and broker audit information.
samples/22-event_source_cqrs_app
22-event_source_cqrs_app
Shows the package boundary where event-source owns aggregate writes and stream persistence while CQRS builds and queries a separate read model.
node-http + event-source + typeorm + cqrs
Endpoints
GET /health
GET /interop/
GET /interop/users
GET /interop/state
GET /interop/streams/:id
POST /interop/users
POST /interop/users/:id/verify-email
Flujo habitual
Register the event-store datasource and the separate read datasource, then bind event-source and CQRS to those aliases before bootstrap.
Create users through the event-source endpoints and inspect /interop/streams/:id to confirm aggregate replay and stored event history.
Query /interop/users and /interop/state to verify CQRS projections, runtime state, and the read-side model fed from persisted domain events.
samples/23-socket_io_express_app
23-socket_io_express_app
Aplicación de ejemplo con Express que usa gateways Socket.IO decorados, uniones a salas, acknowledgements automáticos y broadcasts disparados por HTTP.
express-http + socket-io
Endpoints
GET /
GET /health
GET /socket/
GET /socket/status
GET /socket/announce/:message
Flujo habitual
Arranca Express mediante ExpressAdapter y deja que @xtaskjs/socket-io se conecte al servidor HTTP activo durante listen().
Abre la página de demostración, únete al lobby del namespace /chat y emite eventos chat.join y chat.message desde el cliente del navegador.
Llama a /socket/announce/:message para publicar un evento server.announcement desde un controlador HTTP mediante InjectSocketService().
samples/24-throttler_app
24-throttler_app
node-http application demonstrating global and per-endpoint rate limiting using configureThrottler and @Throttle decorators with memory storage.
node-http + throttler
Endpoints
GET /health
GET /items (throttled: 10 req / 30s)
GET /items/heavy (throttled: 2 req / 1m)
GET /items/open (no throttle)
Flujo habitual
configureThrottler() registers global 100 req/min default with memory driver.
Request arrives at a throttled endpoint.
Throttler extracts the key (IP by default) and checks the counter in the store.
Within limit: request proceeds normally to the controller handler.
Over limit: 429 Too Many Requests is returned with a Retry-After header.
samples/25-testing_app
25-testing_app
Demonstrates isolated testing modules, DI overrides, lifecycle hooks, and in-memory test containers powered by @xtaskjs/testing.
node-http + testing
Endpoints
GET /health
GET /tests/status
POST /tests/run
Flujo habitual
Build a testing module with Test.createTestingModule() and override providers for deterministic tests.
Run controller and service-level assertions without booting a full production runtime.
Close module references after each test to release lifecycle hooks and avoid shared state leaks.
samples/26-bots_app
26-bots_app
Unified bots sample using Telegram, Slack, and WhatsApp adapters with decorated gateway handlers in one runtime.
node-http + bots
Endpoints
GET /health
GET /bots/status
POST /bots/dispatch
Flujo habitual
Register BotsModule adapters and decorate gateway handlers with command, message, and callback decorators.
Dispatch messages through the unified runtime to keep platform-specific logic behind adapter boundaries.
Inspect status endpoints to validate active adapters, handler groups, and dispatch diagnostics.
samples/27-bots_webhook_security_app
27-bots_webhook_security_app
Webhook-first bots sample with Slack and Telegram signature verification plus JWT-protected audit routes.
express-http + bots + security
Endpoints
GET /health
POST /webhooks/slack
POST /webhooks/telegram
GET /audit/events
Flujo habitual
Configure webhook secrets and JWT validation through ConfigModule before startup.
Receive signed webhook events, validate signatures, and dispatch bot handlers through @xtaskjs/bots.
Expose protected audit endpoints using @xtaskjs/security to review webhook processing and runtime events.
Configuración de cookies
Usamos cookies esenciales para que el sitio funcione correctamente.
Elige si quieres aceptar la configuración actual de cookies o continuar solo con las cookies esenciales. También puedes revisar las categorías que utilizamos.
Preferencias actuales
Cookies esenciales
Necesarias para el inicio de sesión seguro, la verificación temporal durante el acceso y para recordar el idioma seleccionado.
Obligatorias
Cookies opcionales
Actualmente no hay cookies no esenciales activas en este sitio.
No se usan
xtask_sessionMantiene iniciada la sesión de los usuarios autenticados de forma segura durante hasta 8 horas.
xtask_login_challengeGuarda un desafío temporal de verificación durante el inicio de sesión y caduca a los 10 minutos.
xtask_localeRecuerda el idioma seleccionado del sitio durante hasta 1 año.
La preferencia de tema se guarda en el almacenamiento local del navegador, no se envía al servidor y no crea una cookie HTTP.