SaaS Maker es un starter open-source para productos SaaS multi-tenant. Un comando crea tres servicios — API, app y panel admin — con organizaciones, roles, invitaciones, sesiones, correos, tests, CI y deploys ya cableados. Tu energía va al producto, no a la plomería.
uvx saas-maker new my-saas Apache-2.0 · Python 3.14 + React 19 · un comando crea y aprovisiona todo el stack
Las decisiones aburridas ya están tomadas y probadas — multi-tenancy, auth, sesiones, correo, un panel admin aparte, un sistema de diseño. Tú agregas los módulos que hacen tuyo al producto.
Cada tabla de tenant lleva organization_id y cada query filtra por él. Una fila de otra organización responde 404, nunca 403. Un usuario puede pertenecer a varias organizaciones y cambiar entre ellas.
JWT de acceso + refresh tokens persistidos y rotados; logout, logout-all y cambio de contraseña los revocan. Verificación de correo, reset de contraseña y rate limit por IP en cada endpoint de auth.
owner > admin > member con una sola dependencia require_role. Invitaciones por token con expiración, enviadas por correo y aceptadas en la app.
Los admins de plataforma viven en su propia tabla y su propio realm de auth. UI gris neutra a propósito, para que nunca se confunda con el producto.
DESIGN.md define los tokens, los componentes y el tono de los textos. Una sola variable --brand-hue rebrandea toda la app; shadcn/ui + Tailwind 4 por debajo.
pytest contra migraciones reales, Vitest + Testing Library, GitHub Actions por repo (lint, typecheck, tests, audit, build de Docker) y configs de Kamal 2 para los tres servicios.
La API, la app de los clientes y el panel admin no comparten nada más que un contrato HTTP. Cada uno tiene su historial de git, su pipeline de CI, su Dockerfile y su config de Kamal — así escalan, salen y se revierten por separado.
REST + JWT Kamal 2 · una imagen por servicio
Capas, regla de aislamiento, endpoints y convenciones de tests están escritos en el CLAUDE.md de cada servicio — explora la plantilla.
uvx saas-maker new my-saas El wizard pregunta nombre, slogan, color de marca, Postgres y, opcionalmente, tus datos de deploy y SMTP — luego descarga la plantilla fijada, la brandea, escribe cada .env y archivo de secretos, instala dependencias, crea la base de datos y corre las migraciones.
cd backend && make dev
cd frontend && npm run dev
cd admin && npm run dev API en 8090, app en 5190, admin en 5191. Regístrate en la app para tener tu primera organización; crea el primer admin de plataforma con un script.
cd backend && kamal deploy
kamal db-migrate
cd frontend && kamal deploy
cd admin && kamal deploy Cada servicio sale con Kamal 2 desde su propio config/deploy.yml — primero el backend, luego las SPAs (kamal setup solo una vez por servicio, para instalar Docker y el proxy). Postgres corre como accesorio de Kamal en el mismo servidor.
Prerequisitos: uv, Node 24 y un PostgreSQL local (o el docker-compose opcional con Postgres + Mailpit).
Como rails generate, pero para un SaaS multi-tenant. Escribe modelo, migración, schemas, servicio, controlador y tests en el backend; tipos, hook, lista, formulario, diálogo de borrado, badge, página, ruta, entrada del sidebar y tests en el frontend — y los conecta en las anclas del generador.
uvx saas-maker generate module tour \
--label Tour --label-plural Tours --icon Map \
--fields "name:str:Nombre,base_price:money:Precio por persona,\
kind:choice(activity=Actividad|package=Paquete):Tipo,\
duration_days:int:Días,notes:text?:Notas" \
--status "active=Activo,draft=Borrador,archived=Archivado" backend/app/{models,schemas}/tour.py
backend/app/services/tour_service.py
backend/app/controllers/tours.py
backend/alembic/versions/…_add_tours_table.py
backend/tests/test_tours.py
frontend/src/types/api.ts · hooks/useTours.ts
frontend/src/components/features/tours/*.tsx
frontend/src/pages/ToursPage.tsx (+ .test.tsx)
+ main.py · models/__init__.py · router · Sidebar
El código generado calca el módulo de referencia projects. Para formas que no son un CRUD plano, la skill saas-maker-add-module tiene la lista manual. CLI en GitHub · PyPI.
Las reglas de un proyecto SaaS Maker — aislamiento, capas, gates de calidad, tokens de diseño, orden de deploy — empaquetadas como Agent Skills instalables. Tu agente las lee on-demand y extiende el proyecto como corresponde, apuntando a la doc del propio proyecto en vez de adivinar.
npx skills add SaaS-Maker-Stack/skills --skill '*' saas-maker-primerInvócala primero. Los tres servicios, las reglas no negociables, cómo aplicar un DESIGN.md externo sin romper el sistema y qué skill cargar después.
saas-maker-clisaas-maker new y generate module: el wizard, cada opción, el DSL de --fields/--status, qué escribe y qué correr justo después.
saas-maker-add-moduleLa lista para un recurso por organización a mano: backend, frontend, anclas, la regla de aislamiento y el test entre organizaciones.
saas-maker-deployDespliega y opera en un servidor con Kamal 2 — backend, frontend, admin en orden; migraciones, primer admin, logs, rollback.
Funciona con Claude Code, Cursor, Codex, Gemini CLI y más — el estándar abierto Agent Skills. Explora las skills.
| Backend | Python 3.14 · FastAPI · SQLModel · Alembic · PostgreSQL · PyJWT · uv · ruff |
|---|---|
| Frontend | React 19 · TypeScript 6 · Vite 8 · React Router 8 · TanStack Query · shadcn/ui · Tailwind CSS 4 |
| Admin | Mismo stack que el frontend, auth aparte, paleta neutra |
| Calidad | pytest contra migraciones reales · Vitest + Testing Library · GitHub Actions por repo |
| Ops | Kamal 2 · Docker · Postgres como accesorio · Mailpit en dev |