Het bouwen van een projectmanagementtool met Prisma

Ik bouw een collaboratieve projectmanagementtool zoals Trello. Ik gebruik React, Express.js, PostgreSQL en Socket.io.

De eerste stap is het databaseschema. Ik heb zes modellen ontworpen om gebruikers, projecten, boards, taken, reacties en meldingen te beheren.

Hier zijn de belangrijkste technische keuzes en lessen uit mijn Prisma-schemaontwerp:

• Gebruik CUID voor ID's Ik gebruik @default(cuid()) voor alle ID's. Deze zijn beter dan eenvoudige getallen voor publieke URL's. Ze voorkomen dat mensen kunnen raden hoeveel records je hebt.

• Expliciete relationele namen Wanneer twee velden naar hetzelfde model verwijzen, raakt Prisma in de war. Een taak heeft bijvoorbeeld een maker en een toegewezen persoon. Beiden zijn Users. Ik moet deze relaties expliciet benoemen met @relation-namen om migratiefouten te voorkomen.

• Junction-tabellen voor Many-to-Many relaties Een gebruiker kan bij veel projecten horen. Een project kan veel gebruikers hebben. Ik heb een ProjectMember-model gemaakt om ze te koppelen. Ik heb een unieke beperking (unique constraint) toegevoegd op userId en projectId. Dit voorkomt dat dezelfde gebruiker twee keer aan een project deelneemt.

• Hiërarchie en logica Taken maken geen deel uit van projecten. Ze maken deel uit van boards. Boards maken deel uit van projecten. Dit maakt drag-and-drop eenvoudig. Om een taak te verplaatsen, hoef je alleen de boardId bij te werken.

• Nullable relaties Sommige relaties zijn verplicht en sommige zijn optioneel. Een taak moet een maker hebben, dus ik gebruik geen vraagteken. Een toegewezen persoon is optioneel, dus ik gebruik User? en String?. Je moet beide opnemen om het schema te laten werken.

Veelvoorkomende fouten die ik ben tegengekomen:

Vervolgens ga ik de Express-backend bouwen en Socket.io instellen voor real-time updates.

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