Entwicklung eines Projektmanagement-Tools mit Prisma

Ich entwickle ein kollaboratives Projektmanagement-Tool wie Trello. Ich verwende React, Express.js, PostgreSQL und Socket.io.

Der erste Schritt ist das Datenbank-Schema. Ich habe sechs Modelle entworfen, um Benutzer, Projekte, Boards, Aufgaben, Kommentare und Benachrichtigungen zu verwalten.

Hier sind die wichtigsten technischen Entscheidungen und Erkenntnisse aus meinem Prisma-Schema-Design:

• Verwendung von CUID für IDs Ich verwende @default(cuid()) für alle IDs. Diese sind für öffentliche URLs besser geeignet als einfache Zahlen. Sie verhindern, dass man erraten kann, wie viele Datensätze vorhanden sind.

• Explizite Beziehungsnamen Wenn zwei Felder auf dasselbe Modell verweisen, wird Prisma verwirrt. Zum Beispiel hat eine Aufgabe einen Ersteller (Creator) und einen zugewiesenen Benutzer (Assignee). Beide sind Users. Ich muss diese Beziehungen explizit mithilfe von @relation-Namen benennen, um Migrationsfehler zu vermeiden.

• Zwischentabellen für Many-to-Many-Beziehungen Ein Benutzer kann vielen Projekten angehören. Ein Projekt kann viele Benutzer haben. Ich habe ein ProjectMember-Modell erstellt, um sie zu verknüpfen. Ich habe einen Unique-Constraint auf userId und projectId gesetzt. Dies verhindert, dass derselbe Benutzer einem Projekt zweimal beitritt.

• Hierarchie und Logik Aufgaben existieren nicht direkt in Projekten. Sie existieren in Boards. Boards existieren in Projekten. Das macht Drag-and-Drop einfach. Um eine Aufgabe zu verschieben, muss nur die boardId aktualisiert werden.

• Nullable-Beziehungen Einige Beziehungen sind erforderlich, andere sind optional. Eine Aufgabe muss einen Ersteller haben, daher verwende ich kein Fragezeichen. Ein zugewiesener Benutzer ist optional, daher verwende ich User? und String?. Man muss beides angeben, damit das Schema funktioniert.

Häufige Fehler, die ich gefunden habe:

Als Nächstes werde ich das Express-Backend bauen und Socket.io für Echtzeit-Updates einrichten.

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