Prisma के साथ एक Project Management Tool बनाना

मैं Trello की तरह एक collaborative project management tool बना रहा हूँ।

मैं React, Express.js, PostgreSQL, और Socket.io का उपयोग कर रहा हूँ। किसी भी backend route को लिखने से पहले, मुझे database schema डिज़ाइन करना होगा।

Schema ही आधार है। यदि schema गलत है, तो पूरा ऐप विफल हो जाएगा। यहाँ Prisma schema डिज़ाइन का मेरा विवरण दिया गया है।

Models

• User: यह नाम, ईमेल और पासवर्ड स्टोर करता है। मैं IDs के लिए cuid() का उपयोग करता हूँ। यह लंबी, यूनिक स्ट्रिंग्स बनाता है। यह नंबर्स की तुलना में बेहतर है क्योंकि यह URL में आपके यूजर काउंट को लीक नहीं करता है।

• Project: इसमें प्रोजेक्ट का नाम और विवरण (description) होता है। मैंने प्रश्न चिह्न (?) का उपयोग करके description को optional बना दिया है।

• ProjectMember: यह एक junction table है। यह Users को Projects से जोड़ता है। चूंकि एक यूजर कई प्रोजेक्ट्स में शामिल हो सकता है, और एक प्रोजेक्ट में कई यूजर्स हो सकते हैं, इसलिए many-to-many relationship को मैनेज करने के लिए आपको इस बीच वाली टेबल की आवश्यकता होती है। मैंने एक ही यूजर को दो बार एक ही प्रोजेक्ट में शामिल होने से रोकने के लिए एक unique constraint जोड़ा है।

• Board: Tasks, boards के अंदर होते हैं। Boards, projects के अंदर होते हैं। यह hierarchy drag-and-drop को आसान बनाती है। एक कॉलम से दूसरे कॉलम में टास्क ले जाना सिर्फ एक single field update है।

• Task: यह core model है। इसके User model के साथ दो अलग-अलग relations हैं:

• Comment: यूजर्स टास्क पर कमेंट छोड़ सकते हैं। कोड को पढ़ने में आसान रखने के लिए मैंने relation का नाम "user" के बजाय "author" रखा है।

• Notification: यूजर्स के लिए मैसेज ट्रैक करने के लिए एक सरल model।

Technical Lessons Learnt

इसे बनाते समय मुझे कई त्रुटियों (errors) का सामना करना पड़ा। इनसे सावधान रहें:

Schema अब migrate हो चुका है। इसके बाद, मैं real-time updates के लिए Express backend और Socket.io सेटअप बनाऊँगा।

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