Prisma
Prisma 7 es el ORM que traduce TypeScript a SQL.
| Decisión | Opción |
|---|---|
| Versión | Prisma 7.8.0 |
| Adapter | @prisma/adapter-pg (requerido en Prisma 7) |
| DB local | PostgreSQL via Docker (syncro-pg) |
| DB cloud | Neon PostgreSQL |
Prisma 7 — Cambios importantes respecto a v6
Sección titulada «Prisma 7 — Cambios importantes respecto a v6»1. prisma.config.ts en raíz del proyecto
Sección titulada «1. prisma.config.ts en raíz del proyecto»Prisma 7 ya no usa solo prisma/schema.prisma. Requiere un archivo prisma.config.ts en la raíz del proyecto:
import "dotenv/config";import type { PrismaConfig } from "prisma"
export default { schema: "prisma/schema.prisma", datasource: { url: process.env.DATABASE_URL!, },} satisfies PrismaConfig2. PrismaPg en vez de datasourceUrl
Sección titulada «2. PrismaPg en vez de datasourceUrl»En Prisma 7, new PrismaClient({ datasourceUrl }) no existe. Se usa el driver adapter:
import { PrismaClient } from "@prisma/client"import { PrismaPg } from "@prisma/adapter-pg"
const globalForPrisma = globalThis as unknown as { prisma: PrismaClient }
export const prisma = globalForPrisma.prisma ?? new PrismaClient({ adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL! }),})
if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma3. Generación del cliente
Sección titulada «3. Generación del cliente»El cliente generado se almacena en el store de pnpm (node_modules/.pnpm/...). Se genera con:
pnpm prisma generateSchema actual
Sección titulada «Schema actual»El schema completo incluye 15 modelos y 3 enums, organizados en 4 capas: Autenticación, Perfil, Workspace y Kanban.
→ Documentación completa del schema con decisiones de diseño
Resumen de modelos
Sección titulada «Resumen de modelos»| Capa | Modelos |
|---|---|
| Autenticación | User, Account, Session, VerificationToken |
| Perfil | Profile (1:1 con User) |
| Workspace | Workspace, WorkspaceMember, Invitation |
| Kanban | Board, Column, Task, Label, Comment |
| Intermedias | TaskAssignee, TaskLabel |
MemberRole: OWNER, ADMIN, MEMBERTaskPriority: LOW, MEDIUM, HIGH, URGENTInvitationStatus: PENDING, ACCEPTED, EXPIRED
Vercel — Despliegue
Sección titulada «Vercel — Despliegue»Problema: PrismaClient no exportado en build
Sección titulada «Problema: PrismaClient no exportado en build»Prisma 7 necesita prisma generate antes de next build. En Vercel:
prismadebe estar endependencies(no endevDependencies), porque Vercel solo instala producción por defectopostinstallscript para que se genere automáticamente traspnpm install:
{ "scripts": { "build": "prisma generate && next build", "postinstall": "prisma generate" }, "dependencies": { "prisma": "^7.8.0" }}Errores comunes en Vercel
Sección titulada «Errores comunes en Vercel»| Error | Causa | Fix |
|---|---|---|
Module '"@prisma/client"' has no exported member 'PrismaClient' |
prisma generate no se ejecutó |
Mover prisma a dependencies + postinstall |
Broken lockfile: no entry for |
Lockfile desactualizado tras merge conflict | pnpm install --no-frozen-lockfile |
Conexión a Neon (producción)
Sección titulada «Conexión a Neon (producción)»DATABASE_URL="postgresql://user:password@ep-xxx.eu-west-2.aws.neon.tech/neondb?sslmode=require"Para cambiar entre local y Neon, comentar/descomentar la línea en .env.