Prisma वापरून प्रोजेक्ट मॅनेजमेंट टूल तयार करणे

मी Trello सारखे एक कोलाबोरेटिव्ह प्रोजेक्ट मॅनेजमेंट टूल तयार करत आहे.

मी React, Express.js, PostgreSQL आणि Socket.io वापरत आहे. कोणतेही बॅकएंड रूट्स (backend routes) लिहिण्यापूर्वी, मला डेटाबेस स्कीमा (database schema) डिझाइन करावा लागेल.

स्कीमा हा पाया आहे. जर स्कीमा चुकीचा असेल, तर संपूर्ण ॲप निकामी होते. Prisma स्कीमा डिझाइनचे माझे विश्लेषण खालीलप्रमाणे आहे.

मॉडेल्स (The Models)

User: यामध्ये नावे, ईमेल आणि पासवर्ड साठवले जातात. मी IDs साठी cuid() वापरतो. यामुळे लांब आणि युनिक (unique) स्ट्रिंग्स तयार होतात. हे नंबर्सपेक्षा चांगले आहे कारण यामुळे URL मध्ये तुमच्या युजरची संख्या उघड होत नाही.

Project: यामध्ये प्रोजेक्टचे नाव आणि वर्णन (description) असते. मी प्रश्नचिन्हाचा (?) वापर करून वर्णन ऐच्छिक (optional) केले आहे.

ProjectMember: हे एक जंक्शन टेबल (junction table) आहे. हे Users ला Projects शी जोडते. एक युजर अनेक प्रोजेक्ट्समध्ये सामील होऊ शकतो आणि एका प्रोजेक्टमध्ये अनेक युजर्स असू शकतात, त्यामुळे many-to-many रिलेशनशिप व्यवस्थापित करण्यासाठी तुम्हाला या मधल्या टेबलची गरज असते. एकच युजर दोनदा एकाच प्रोजेक्टमध्ये सामील होऊ नये यासाठी मी एक unique constraint जोडला आहे.

Board: टास्क (Tasks) बोर्डच्या आत असतात. बोर्ड प्रोजेक्टच्या आत असतात. या श्रेणीबद्ध रचनेमुळे (hierarchy) ड्रॅग-अँड-ड्रॉप करणे सोपे होते. एका कॉलममधून दुसऱ्या कॉलममध्ये टास्क हलवणे म्हणजे फक्त एका फील्ड अपडेट करण्यासारखे आहे.

Task: हे मुख्य मॉडेल आहे. याचे User मॉडेलशी दोन वेगळे संबंध (relations) आहेत:

Comment: युजर्स टास्कवर कमेंट्स करू शकतात. कोड वाचनीय ठेवण्यासाठी मी संबंधाला "user" ऐवजी "author" असे नाव दिले आहे.

Notification: युजर्ससाठी मेसेज ट्रॅक करण्यासाठी हे एक साधे मॉडेल आहे.

तांत्रिक अनुभव (Technical Lessons Learnt)

हे तयार करताना मला अनेक त्रुटींचा (errors) सामना करावा लागला. या गोष्टींची काळजी घ्या:

स्कीमा आता मायग्रेट (migrate) झाला आहे. पुढच्या टप्प्यात, मी रिअल-टाइम अपडेट्ससाठी Express बॅकएंड आणि Socket.io सेटअप तयार करेन.

शून्यापासून प्रोजेक्ट मॅनेजमेंट टूल तयार करणे: