Lo que vas a construir
Un SaaS completo con todo lo que necesitas para lanzar: autenticacion, pagos con suscripciones, y una feature de IA.
Usuarios se registran con Google, pagan una suscripcion mensual con Stripe, y acceden a funcionalidades de IA (chat, analisis, o generacion de contenido). Base de datos PostgreSQL, cache con Redis, y deploy listo con Docker.
Al terminar tendras la arquitectura completa de un SaaS moderno. Desde el login hasta el cobro mensual, con una funcionalidad de IA que diferencia tu producto. Es el proyecto que integra todo lo que aprendiste en los niveles anteriores.
El prompt para empezar
Diseña la arquitectura de un SaaS con:
- Auth con Google (Firebase)
- Pagos con Stripe (suscripciones)
- Feature de IA (elige: chat, análisis, generación)
- Base de datos PostgreSQL
- Deploy en Docker
Arquitectura sugerida
┌─────────────────────────────────────────────────────┐
│ FRONTEND │
│ (Next.js 15) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Auth │ │ Billing │ │ AI │ │
│ │ Page │ │ Page │ │ Chat │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────┼────────────┼────────────┼───────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────┐
│ API │
│ (Next.js API) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │Firebase │ │ Stripe │ │ Gemini │ │
│ │ Auth │ │Webhooks │ │ API │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────┼────────────┼────────────┼───────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────┐
│ STORAGE │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ PostgreSQL │ │ Redis │ │
│ │ (users, │ │ (cache, │ │
│ │ chats) │ │ sessions) │ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────┘
Componentes clave
1. Auth
// Usa lo aprendido en auth-firebase
import { signInWithGoogle } from './firebase'
2. Pagos
// Usa lo aprendido en payment-stripe
import { createCheckoutSession } from './stripe'
3. IA
// Usa lo aprendido en chatbot-gemini
import { generateResponse } from './gemini'
4. Database
// Usa lo aprendido en crud-postgres
import { prisma } from './db'
Modelo de datos
model User {
id String @id @default(cuid())
email String @unique
plan Plan @default(FREE)
stripeId String?
chats Chat[]
tokensUsed Int @default(0)
createdAt DateTime @default(now())
}
model Chat {
id String @id @default(cuid())
userId String
user User @relation(fields: [userId], references: [id])
messages Message[]
createdAt DateTime @default(now())
}
model Message {
id String @id @default(cuid())
chatId String
chat Chat @relation(fields: [chatId], references: [id])
role String // user | assistant
content String
createdAt DateTime @default(now())
}
enum Plan {
FREE
PRO
ENTERPRISE
}
Límites por plan
| Feature | Free | Pro | Enterprise |
|---|---|---|---|
| Mensajes/mes | 100 | 10,000 | Ilimitado |
| Modelos | Gemini Flash | Gemini Pro | Todos |
| Historial | 7 días | 1 año | Ilimitado |
| Soporte | Comunidad | Dedicado |
Docker Compose
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://...
- GEMINI_API_KEY=...
- STRIPE_SECRET_KEY=...
depends_on:
- db
- redis
db:
image: postgres:16
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7-alpine
volumes:
pgdata:
Felicitaciones
Has completado todos los niveles de luxIA Cooking.
Ahora tienes las habilidades para construir productos reales con IA.