ÚLTIMO RELEASEEN DESARROLLO DESDE 2026

Saltate seis
meses de
boilerplate

Un starter TypeScript SaaS production-grade construido sobre Domain-Driven Design.

01Cloná

Un comando. Bun trae cada dependencia del workspace, Prisma genera el cliente.

02Generá

Plop scaffoldea domain, application, infrastructure — cableado al contenedor de DI.

03Deploy

La imagen Docker se construye con `bun run build`. Deploy a Fly, Render, tu VPS.

STACK

Construido sobre tecnología que ya conocés.

Sin lock-in exótico de vendor. Infra estándar, aburrida, battle-tested — cableada para que vos no tengas que hacerlo.

EN NÚMEROS

Densidad, cuantificada.

Lo que recibís el día que clonás el repo.

459
tests pasando
24
páginas de docs
10
bounded contexts
3
providers de pago
3
idiomas i18n
0
mocks en CI

01 — IDENTITY

Auth que no te hace llorar.

Email + contraseña, OAuth, magic-link, 2FA TOTP, password reset, GDPR delete — pre-cableado con defaults sanos y rate limits desde el día que clonás.

  • BetterAuth + sesiones argon2id
  • OAuth (Google, GitHub, más)
  • Sign-in con magic-link
  • 2FA TOTP + códigos de backup
  • Rate-limit por IP y por email
  • Password reset + verificación de email
Ver docs de auth
iam.signIn.ts
import { iam } from '@app/iam';
 
const session = await iam.signIn({
email,
password,
totp: code, // throws on invalid 2FA
});
 
// session is an HMAC-signed httpOnly cookie
// rate-limited per IP and per email

02 — REVENUE

Cobrá el día que lances.

Tres providers de pago detrás de un solo port. Customer portal, webhooks firmados in y out — el loop completo.

  • IPaymentProvider port: Polar, Stripe, MercadoPago
  • Checkout y portal hosteados por el provider
  • Webhook ingest idempotente con HMAC verificado
  • Recibos React Email vía el módulo notifications
  • Webhooks salientes a tus clientes (HMAC + retries)
  • Audit trail de cada evento de billing
Ver docs de billing
01

Checkout

POST /billing/checkout returns the provider-hosted URL.

02

Webhook in

HMAC-verified, idempotent, persists to your read model.

03

Portal

One-line redirect to the provider-hosted customer portal.

03 — TENANCY

Multi-tenant desde t=0.

Workspaces, members, roles, invitaciones, API keys por tenant. Las primitivas B2B que cada cliente pagador pide en la semana dos.

  • Workspaces de organización con cookies HMAC-signed
  • Roles de member: owner, admin, member
  • Invitaciones por email con tokens que expiran
  • API keys scoped por tenant
  • Impersonation de platform-admin, totalmente auditada
  • Audit log append-only, event-sourced
Ver docs de RBAC
A
Acme Inc
PRO PLAN
MEMBERS · 4+ Invite

04 — RELIABILITY

Dormí tranquilo de noche.

Tracing, errores, logs estructurados, readiness probes, jobs en Redis real. La infra aburrida que despierta a alguien si te la salteás.

  • OTel auto-instrumentation (bootea antes de Express)
  • Sentry: @sentry/bun + @sentry/nextjs
  • Logs Pino estructurados con trace correlation
  • /readiness probe + endpoint /metrics
  • Jobs BullMQ en Redis real
  • Dead-letter queue + schedulers tipo cron
Ver docs de observability
OTEL TRACE · 245mstrace_id 7f3a…
  • POST /api/v1/checkout245ms
  • iam.requireAuth4ms
  • pg SELECT user18ms
  • redis GET plan:423ms
  • polar.createCheckout168ms
  • jobs.enqueue receipt6ms

05 — AI

Primitivas de AI, no rebuilds.

Streaming de chat sobre SSE en Express, tool use, structured output, presupuestos de tokens por tenant, RAG, y un scaffold de servidor MCP.

  • Vercel AI SDK + provider de Anthropic
  • Streaming SSE en Express (sin lock-in de Vercel)
  • Tool use + structured output, type-safe
  • Token budget por org + rate limits
  • RAG con pgvector + primitivas de retrieval
  • Scaffold de servidor MCP + módulo assistant
Ver docs de AI
chat.route.ts
import { ai } from '@app/ai';
 
const stream = await ai.streamText({
model: 'claude-opus-4-7',
messages,
tools: { listUsers, search },
maxTokens: 4096, // per-org budget enforced
});
 
return stream.toResponse(); // SSE, typed

ARQUITECTURA

Domain-driven, layer-enforced.

Cuatro capas, una regla: las dependencias apuntan hacia adentro. ESLint lo enforcea en cada commit — no existe el "oops, importé Express en domain".

interfaces/http/
Express controllers, Zod schemas, registro de rutas.
application/
Use cases, ports, DTOs. Orquesta domain + infrastructure.
domain/
Entities, value objects, repositories. Puro, sin I/O, sin framework.
infrastructure/
Prisma repos, adapters de terceros, mappers. Implementa los ports.
Dependencies point inward.
infrastructure/ implements ports.

domain/ no puede importar express, @prisma/client, ni nada de application/, infrastructure/, interfaces/. ESLint flat config lo enforcea.

BUILT FOR AGENTS

Claude Code y Cursor se sienten en casa.

AGENT.md por bounded context. Plop generators que scaffoldean toda la pila de capas. Contratos OpenAPI tipados. Naming de archivos predecible. Tu pair-programmer de IA no alucina cuando las convenciones son así de consistentes.

~/usedeploy
$ bun run plop endpoint
? Module name: notifications
? Endpoint name: send
? Method: POST

 application/use-cases/send.use-case.ts
 application/dto/send.dto.ts
 interfaces/http/send.controller.ts
 interfaces/http/send.schema.ts
 application/use-cases/send.use-case.spec.ts

$ bun run generate:api
 OpenAPI regenerated · 47 routes typed
  • AGENT.md por bounded context — las reglas, en inglés plano, donde el agente las lee
  • Plop generators scaffoldean domain + application + infrastructure + interfaces en un solo comando
  • OpenAPI generado en cada cambio de endpoint — el typed fetch client se mantiene en lock-step
  • ESLint enforcea el layering DDD — los agentes no pueden cruzar boundaries por accidente
  • Tipos de ID branded hacen imposibles las foreign key mezcladas
  • Result<T, E> sobre throw — los agentes ven los error paths en la firma del tipo

Type-safe end-to-end. Bounded contexts DDD. Endpoints de AI streaming. 459 tests exigentes.

UseDeploy es la base production-grade para la próxima generación de aplicaciones TypeScript SaaS.

TESTING

459 tests en la suite. Redis real. Cero mocks en CI.

Tests unitarios de domain, tests de integración sobre Postgres + Redis reales, tests end-to-end sobre un browser real. La pipeline de CI los corre todos en cada commit.

$ bun run testPASS · 14.2s
modules/iam/use-cases/sign-in.spec.ts(24)
modules/iam/use-cases/totp.spec.ts(11)
modules/billing/adapters/polar.spec.ts(18)
modules/billing/use-cases/checkout.spec.ts(14)
modules/tenancy/use-cases/invitation.spec.ts(12)
modules/tenancy/use-cases/api-keys.spec.ts(9)
modules/observability/probes/readiness.spec.ts(7)
infrastructure/jobs/bullmq-runner.spec.ts(16)
PASS · 459 tests across 62 files in 14.21s

INTERNACIONALIZACIÓN

Tres idiomas, type-safe, día uno.

next-intl con typed messages. Fumadocs i18n con dot-parser de archivos por locale. EN/ES/PT en el producto Y en el sitio de docs, con fallback automático para keys faltantes.

ENgetting-started.en.mdx

Get started

Clone the repo, install deps, run the dev server.

t('onboarding.start')
ESgetting-started.es.mdx

Empezar

Cloná el repo, instalá deps, corré el dev server.

t('onboarding.start')
PTgetting-started.pt.mdx

Começar

Clone o repo, instale deps, rode o dev server.

t('onboarding.start')

DEPLOY DONDE QUIERAS

Corre donde vos lo quieras correr.

Sin lock-in de plataforma. El Dockerfile es la única fuente de verdad — cada target builda desde la misma imagen.

Docker

docker-compose para local + prod. Build multi-stage de Bun, non-root, healthcheck.

Railway

Deploy con un click usando railway.toml en root + apps/client. Postgres + Redis como managed plugins.

Supabase

Usá Supabase Postgres + Auth como reemplazos drop-in. Schema y seeds compatibles.

Tu VPS

Unidades systemd, reverse proxy con Caddy, GitHub Actions para CD. Self-host friendly.

Pensado para agentes de AI.

Desde convenciones AGENT.md hasta tipos de IDs branded y generadores Plop. UseDeploy está estructurado para que Claude Code y Cursor naveguen, razonen y refactoricen sin alucinar.

Convenciones legibles por agentes

El repo incluye archivos CLAUDE.md y AGENT.md que documentan bounded contexts, convenciones, patrones prohibidos y el PORQUÉ de cada decisión arquitectónica. Soltá tu propia config de asistente y a producir.

Leer la docu
CLAUDE.md
1  ## DDD layering (enforced by ESLint)
2
3  Each module under apps/server/src/modules/<ctx>/:
4
5    domain/          # entities, VOs — no I/O
6    application/     # use cases, ports, DTOs
7    infrastructure/  # Prisma repos, adapters
8    interfaces/http/ # Express controllers, Zod
9
10 domain/ cannot import express,
11 @prisma/client, or anything from
12 application/infrastructure/interfaces/.
13
14 ESLint flat configs enforce this.

VS LOS STARTERS GRATIS

Lo que "gratis" te deja en la mano.

create-t3-app te da una app Next tipada y un login OAuth. El día que necesitás invoices, invitaciones o background jobs, ya estás shopeando 6 semanas más de glue work.

FeatureuseDeploycreate-t3-appShipFastMakerkit
Email + password + 2FA + magic-linksolo OAuth
Multi-tenant orgs + invitaciones + API keysparcial
RBAC con permisos tipados
Billing — múltiples providers3 (Polar/Stripe/MP)StripeStripe
Background jobs (BullMQ + Redis real)
Observability (OTel + Sentry + /metrics)
Webhooks salientes (HMAC + retries)
i18n (EN + ES + PT, tipado)
DDD layering enforced por ESLint
Sitio de docs scaffoldeado (Fumadocs)

Todo lo que necesitás
por un pago único.

Un solo pago cubre el código fuente, la docu y 459 tests. Sin suscripciones, sin license keys, sin telemetría.

Guía de precios
$15/ $50
pago único · updates de por vida en el tier de $50
  • Código fuente completo, congelado para siempre
  • Proyectos ilimitados, uso comercial
  • 459 tests · 24 páginas de docs · 10 bounded contexts
  • Garantía de devolución de 14 días

FAQ

Lo que vas a preguntar igual.

¿Puedo pedir refund?

Sí. 14 días, sin preguntas, sin formulario "¿podés contarnos por qué?". Preferimos que te vayas a que te quedes con una herramienta que no te calza.

¿Está abierto el código?

Sí. Recibís el repo Git completo, MIT-licensed para uso comercial dentro de tus proyectos. Sin obfuscación, sin licence keys, sin telemetría llamando a casa.

¿Qué stack usa?

Bun runtime, servidor Express, Prisma + Postgres, cliente Next.js, BetterAuth, billing Polar/Stripe/MercadoPago, BullMQ + Redis, OpenTelemetry + Sentry + Pino, storage S3-compatible, Vercel AI SDK + Anthropic. Estándar, aburrido, bien soportado.

¿Cuánto hasta estar shippeando?

Primer commit pusheado en una tarde. Auth real + org + primer cliente pagador en un fin de semana. SaaS completo con dominio custom en una semana.

¿Viene con tests?

459 de ellos. Tests unitarios de domain, tests de integración sobre Postgres + Redis reales, e2e sobre un browser real. CI los corre todos en cada commit. Sin mocks en CI.

¿Puedo usarlo para client work / agencias?

Sí, la licencia cubre proyectos ilimitados y uso comercial. Usalo para tu propio SaaS, el SaaS de tu cliente, o ambos.

¿Y los updates después de comprar?

Lifetime updates en el tier de $50. Cada release llega a tu repo vía la herramienta de sync — overwrite selectivo, nunca destruye tu código de negocio.

MC
Desde 2026 · v2.1.0 · Desarrollo activo

MAINTAINER

Construido y shippeado por un solo ingeniero.

UseDeploy lo construye y mantiene Martin Coll — full-stack engineer, fundador y operador. Cada línea sale desde un solo teclado, con el feedback loop agéntico encendido. Sin comité, sin culto Discord — solo un maker que ya shippeó un SaaS antes.