Construindo uma Ferramenta de Gerenciamento de Projetos com Prisma

Estou construindo uma ferramenta de gerenciamento de projetos colaborativa como o Trello. Estou usando React, Express.js, PostgreSQL e Socket.io.

O primeiro passo é o esquema do banco de dados. Desenhei seis modelos para lidar com usuários, projetos, quadros (boards), tarefas, comentários e notificações.

Aqui estão as principais escolhas técnicas e lições do meu design de esquema Prisma:

• Use CUID para IDs Uso @default(cuid()) para todos os IDs. Eles são melhores do que números simples para URLs públicas. Eles evitam que as pessoas adivinhem quantos registros você tem.

• Nomes de Relação Explícitos Quando dois campos apontam para o mesmo modelo, o Prisma fica confuso. Por exemplo, uma tarefa tem um criador e um responsável (assignee). Ambos são Users. Devo nomear essas relações explicitamente usando nomes @relation para evitar erros de migração.

• Tabelas de Junção para Relações Muitos-para-Muitos Um usuário pode pertencer a muitos projetos. Um projeto pode ter muitos usuários. Criei um modelo ProjectMember para vinculá-los. Adicionei uma restrição de unicidade em userId e projectId. Isso evita que o mesmo usuário entre em um projeto duas vezes.

• Hierarquia e Lógica As tarefas não vivem em projetos. Elas vivem em quadros (boards). Os quadros vivem em projetos. Isso torna o drag-and-drop simples. Para mover uma tarefa, você só precisa atualizar o seu boardId.

• Relações Anuláveis Algumas relações são obrigatórias e outras são opcionais. Uma tarefa deve ter um criador, por isso não uso um ponto de interrogação. Um responsável (assignee) é opcional, então uso User? e String?. Você deve incluir ambos para que o esquema funcione.

Erros comuns que encontrei:

Em seguida, vou construir o backend em Express e configurar o Socket.io para atualizações em tempo real.

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