Ir al contenido

Decisiones Técnicas

  • ORM: Prisma 7 ✅
  • Base de datos: PostgreSQL (Neon + Docker local) ✅
  • Tiempo real: Pusher Channels (decidido) ✅
  • Autenticación: NextAuth v5 (Google OAuth + credentials) ✅
  • Despliegue: Vercel ✅
  • UI: Tailwind 4 + lucide-react ✅
  • Internacionalización: next-intl ✅

Problema: Vercel no ejecuta prisma generate porque el CLI está en devDependencies.

Decisión: prisma se mueve a dependencies y se añade postinstall: "prisma generate" para que el cliente se genere automáticamente en el build de Vercel.

Driver adapter (PrismaPg) en vez de datasourceUrl

Sección titulada «Driver adapter (PrismaPg) en vez de datasourceUrl»

Problema: Prisma 7 elimina datasourceUrl del constructor de PrismaClient.

Decisión: Usar new PrismaClient({ adapter: new PrismaPg({ connectionString }) }).

Problema: La landing pública y el dashboard autenticado comparten rutas.

Decisión:

apps/web/app/
├── [locale]/
│ ├── (landing)/page.tsx → /[locale] (pública)
│ ├── (auth)/login/page.tsx → /[locale]/login (pública)
│ ├── (auth)/register/page.tsx → /[locale]/register (pública)
│ └── (workspace)/home/page.tsx → /[locale]/home (autenticada)
└── api/auth/[...nextauth]/route.ts → /api/auth/* (API)

El middleware de next-intl setea la cookie NEXT_LOCALE. Después del callback de Google, al redirigir a /home, el middleware lee la cookie y completa el locale (/es/home o /en/home).

Más detalles en la página de Routing.

El proyecto se despliega en Vercel. Ver guía completa en Deployment.