Kutengeneza Zana ya Usimamizi wa Miradi kwa kutumia Prisma

Ninatengeneza zana ya ushirikiano ya usimamizi wa miradi kama Trello. Ninatumia React, Express.js, PostgreSQL, na Socket.io.

Hatua ya kwanza ni schema ya database. Nilitengeneza models sita ili kushughulikia watumiaji, miradi, mbao (boards), kazi (tasks), maoni, na arifa.

Hapa kuna chaguzi muhimu za kiufundi na mafunzo kutoka kwenye usanifu wangu wa schema ya Prisma:

• Tumia CUID kwa ID Ninatumia @default(cuid()) kwa ID zote. Hizi ni bora kuliko namba rahisi kwa URL za umma. Huzuia watu kukisia ni rekodi ngapi unazo.

• Majina ya Uhusiano ya Wazi (Explicit Relation Names) Wakati nyanja (fields) mbili zinapoelekeza kwenye model moja, Prisma inachanganyikiwa. Kwa mfano, kazi ina mtengenezaji (creator) na mteuli (assignee). Wote ni Users. Lazima nipe majina haya ya uhusiano wazi kwa kutumia majina ya @relation ili kuzuia makosa ya uhamiaji (migration errors).

• Majedwali ya Muunganisho (Junction Tables) kwa Uhusiano wa Many-to-Many Mtumiaji anaweza kuwa sehemu ya miradi mingi. Mradi unaweza kuwa na watumiaji wengi. Nilitengeneza model ya ProjectMember ili kuunganisha. Niliongeza kizuizi cha kipekee (unique constraint) kwenye userId na projectId. Hii inazuia mtumiaji yuleyule kujiunga na mradi mara mbili.

• Ngazi na Mantiki (Hierarchy and Logic) Kazi (tasks) haziko ndani ya miradi. Ziko ndani ya mbao (boards). Mbao (boards) ziko ndani ya miradi. Hii inafanya kitendo cha kuvuta na kuachia (drag-and-drop) kuwa rahisi. Ili kuhamisha kazi, unahitaji tu kusasisha boardId yake.

• Uhusiano unaoweza kuwa tupu (Nullable Relations) Baadhi ya uhusiano ni ya lazima, na mengine ni ya hiari. Kazi lazima iwe na mtengenezaji, kwa hivyo situmii alama ya kiulizo. Mteuli ni wa hiari, kwa hivyo ninatumia User? na String?. Lazima ujumuishe zote mbili ili schema ifanye kazi.

Makosa ya kawaida niliyoyapata:

Kinachofuata, nitatengeneza backend ya Express na kuweka Socket.io kwa ajili ya sasisho za wakati halisi (real-time updates).

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