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. Antes de escrever qualquer rota de backend, preciso projetar o esquema do banco de dados.

O esquema é a base. Se o esquema estiver errado, todo o aplicativo falha. Aqui está o meu detalhamento do design do esquema do Prisma.

Os Modelos

• User: Armazena nomes, e-mails e senhas. Uso cuid() para os IDs. Isso cria strings longas e únicas. É melhor do que números porque não revela a contagem de usuários na URL.

• Project: Contém o nome e a descrição do projeto. Tornei a descrição opcional usando um ponto de interrogação.

• ProjectMember: Esta é uma tabela de junção. Ela vincula Users a Projects. Como um usuário pode participar de muitos projetos e um projeto tem muitos usuários, você precisa desta tabela intermediária para gerenciar o relacionamento many-to-many. Adicionei uma restrição de unicidade para evitar que o mesmo usuário entre em um projeto duas vezes.

• Board: As tarefas ficam dentro de boards. Os boards ficam dentro de projects. Essa hierarquia facilita o drag-and-drop. Mover uma tarefa entre colunas é apenas uma atualização de campo único.

• Task: Este é o modelo principal. Ele possui dois relacionamentos diferentes com o modelo User:

• Comment: Os usuários podem deixar comentários nas tarefas. Nomeei o relacionamento como "author" em vez de "user" para manter o código legível.

• Notification: Um modelo simples para rastrear mensagens para os usuários.

Lições Técnicas Aprendidas

Encontrei vários erros ao construir isso. Fique atento a estes:

O esquema agora foi migrado. Em seguida, vou construir o backend em Express e a configuração do Socket.io para atualizações em tempo real.

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