Construyendo una herramienta de gestión de proyectos con Prisma

Estoy construyendo una herramienta de gestión de proyectos colaborativa como Trello. Estoy utilizando React, Express.js, PostgreSQL y Socket.io.

El primer paso es el esquema de la base de datos. Diseñé seis modelos para gestionar usuarios, proyectos, tableros, tareas, comentarios y notificaciones.

Estas son las decisiones técnicas clave y las lecciones de mi diseño de esquema con Prisma:

• Usar CUID para los IDs Uso @default(cuid()) para todos los IDs. Estos son mejores que los números simples para las URLs públicas. Evitan que la gente adivine cuántos registros tienes.

• Nombres de relación explícitos Cuando dos campos apuntan al mismo modelo, Prisma se confunde. Por ejemplo, una tarea tiene un creador y un asignado. Ambos son Users. Debo nombrar estas relaciones explícitamente usando nombres @relation para evitar errores de migración.

• Tablas de unión para relaciones muchos a muchos Un usuario puede pertenecer a muchos proyectos. Un proyecto puede tener muchos usuarios. Creé un modelo ProjectMember para vincularlos. Añadí una restricción única en userId y projectId. Esto evita que el mismo usuario se una a un proyecto dos veces.

• Jerarquía y lógica Las tareas no viven en los proyectos. Viven en los tableros. Los tableros viven en los proyectos. Esto hace que el "arrastrar y soltar" sea sencillo. Para mover una tarea, solo tienes que actualizar su boardId.

• Relaciones anulables Algunas relaciones son obligatorias y otras son opcionales. Una tarea debe tener un creador, por lo que no uso un signo de interrogación. Un asignado es opcional, así que uso User? y String?. Debes incluir ambos para que el esquema funcione.

Errores comunes que encontré:

A continuación, construiré el backend con Express y configuraré Socket.io para actualizaciones en tiempo real.

Fuente: https://dev.to/chinwuba_jeffrey/building-a-project-management-tool-from-scratch-starting-with-the-prisma-schema-161