𝗣𝗿𝗶𝘀𝗺𝗮 மூலம் ஒரு Project Management கருவியை உருவாக்குதல்

நான் Trello போன்ற ஒரு கூட்டுத் திட்ட மேலாண்மை கருவியை (collaborative project management tool) உருவாக்கி வருகிறேன். இதற்கு நான் React, Express.js, PostgreSQL மற்றும் Socket.io ஆகியவற்றைப் பயன்படுத்துகிறேன்.

முதல் படி தரவுத்தளத் திட்டம் (database schema) ஆகும். பயனர்கள் (users), திட்டங்கள் (projects), போர்டுகள் (boards), பணிகள் (tasks), கருத்துகள் (comments) மற்றும் அறிவிப்புகளை (notifications) கையாள ஆறு மாடல்களை (models) நான் வடிவமைத்துள்ளேன்.

எனது Prisma schema வடிவமைப்பிலிருந்து பெற்ற முக்கிய தொழில்நுட்பத் தெரிவுகள் மற்றும் பாடங்கள் இதோ:

• IDs-களுக்கு CUID-ஐப் பயன்படுத்துதல் அனைத்து IDs-களுக்கும் நான் @default(cuid()) என்பதைப் பயன்படுத்துகிறேன். பொதுவான URL-களுக்கு இவை சாதாரண எண்களை விடச் சிறந்தவை. உங்கள் தரவுத்தளத்தில் எத்தனை பதிவுகள் (records) உள்ளன என்பதை மற்றவர்கள் ஊகிப்பதைத் இவை தடுக்கின்றன.

• தெளிவான உறவுப் பெயர்கள் (Explicit Relation Names) இரண்டு புலங்கள் (fields) ஒரே மாடலைக் குறிக்கும்போது, Prisma குழப்பமடையும். உதாரணமாக, ஒரு பணிக்கு (task) ஒரு உருவாக்குபவர் (creator) மற்றும் ஒரு ஒதுக்கப்பட்டவர் (assignee) இருப்பார்கள். இவர்கள் இருவரும் Users தான். Migration பிழைகளைத் தவிர்க்க, @relation பெயர்களைப் பயன்படுத்தி இந்த உறவுகளைத் தெளிவாகக் குறிப்பிட வேண்டும்.

• Many-to-Many உறவுகளுக்கான Junction Tables ஒரு பயனர் பல திட்டங்களில் இருக்கலாம். ஒரு திட்டத்தில் பல பயனர்கள் இருக்கலாம். அவர்களை இணைக்க நான் ஒரு ProjectMember மாடலை உருவாக்கினேன். userId மற்றும் projectId ஆகியவற்றின் மீது ஒரு தனித்துவமான கட்டுப்பாட்டை (unique constraint) சேர்த்துள்ளேன். இது ஒரே பயனர் ஒரு திட்டத்தில் இரண்டு முறை சேருவதைத் தடுக்கிறது.

• படிநிலை மற்றும் தர்க்கம் (Hierarchy and Logic) பணிகள் (tasks) நேரடியாகத் திட்டங்களில் (projects) இருப்பதில்லை. அவை போர்டுகளில் (boards) உள்ளன. போர்டுகள் திட்டங்களில் உள்ளன. இது drag-and-drop செயல்பாட்டை எளிதாக்குகிறது. ஒரு பணியை நகர்த்த, அதன் boardId-ஐ மட்டும் நீங்கள் மாற்றினால் போதும்.

• Nullable உறவுகள் சில உறவுகள் கட்டாயமானவை (required), சில விருப்பமானவை (optional). ஒரு பணிக்கு கண்டிப்பாக ஒரு உருவாக்குபவர் இருக்க வேண்டும், எனவே நான் கேள்விக்குறியைப் (question mark) பயன்படுத்துவதில்லை. ஒரு பணியை ஒதுக்கப்பட்டவர் (assignee) என்பது விருப்பமானது, எனவே நான் User? மற்றும் String? ஆகியவற்றைப் பயன்படுத்துகிறேன். Schema சரியாகச் செயல்பட இவை இரண்டையும் நீங்கள் சேர்க்க வேண்டும்.

நான் கண்டறிந்த பொதுவான தவறுகள்:

அடுத்து, நான் Express backend-ஐ உருவாக்கி, நிகழ்நேரப் புதுப்பிப்புகளுக்காக (real-time updates) Socket.io-வை அமைப்பேன்.

ஆதாரம்: https://dev.to/chinwuba_jeffrey/building-a-project-management-tool-from-scratch-starting-with-the-prisma-schema-161