Prismaతో ఒక ప్రాజెక్ట్ మేనేజ్‌మెంట్ టూల్‌ను నిర్మించడం

నేను Trello లాంటి ఒక కొలాబరేటివ్ ప్రాజెక్ట్ మేనేజ్‌మెంట్ టూల్‌ను నిర్మిస్తున్నాను.

నేను React, Express.js, PostgreSQL, మరియు Socket.ioలను ఉపయోగిస్తున్నాను. నేను ఏ బ్యాకెండ్ రూట్‌లను (backend routes) రాయకముందే, డేటాబేస్ స్కీమాను డిజైన్ చేయాలి.

స్కీమా అనేది పునాది వంటిది. స్కీమా తప్పుగా ఉంటే, మొత్తం యాప్ విఫలమవుతుంది. Prisma స్కీమా డిజైన్ యొక్క నా విశ్లేషణ ఇక్కడ ఉంది.

మోడల్స్

• User: పేర్లు, ఈమెయిల్స్ మరియు పాస్‌వర్డ్‌లను నిల్వ చేస్తుంది. నేను IDల కోసం cuid()ని ఉపయోగిస్తాను. ఇది పొడవైన, ప్రత్యేకమైన స్ట్రింగ్స్‌ను సృష్టిస్తుంది. ఇది నంబర్ల కంటే మెరుగైనది, ఎందుకంటే ఇది URLలో మీ యూజర్ కౌంట్‌ను బయటపెట్టదు.

• Project: ప్రాజెక్ట్ పేరు మరియు వివరణను కలిగి ఉంటుంది. నేను ప్రశ్న గుర్తు (?) ఉపయోగించి వివరణను ఆప్షనల్‌గా మార్చాను.

• ProjectMember: ఇది ఒక జంక్షన్ టేబుల్ (junction table). ఇది Usersని Projectsతో అనుసంధానిస్తుంది. ఒక యూజర్ అనేక ప్రాజెక్ట్‌లలో చేరవచ్చు మరియు ఒక ప్రాజెక్ట్‌లో అనేక మంది యూజర్లు ఉండవచ్చు, కాబట్టి ఈ many-to-many రిలేషన్‌షిప్‌ను నిర్వహించడానికి మీకు ఈ మధ్యంతర టేబుల్ అవసరం. ఒకే యూజర్ ఒక ప్రాజెక్ట్‌లో రెండుసార్లు చేరకుండా ఉండటానికి నేను ఒక యూనిక్ కన్‌స్ట్రైంట్ (unique constraint)ను జోడించాను.

• Board: టాస్క్‌లు బోర్డుల (boards) లోపల ఉంటాయి. బోర్డులు ప్రాజెక్ట్‌ల లోపల ఉంటాయి. ఈ క్రమానుగత నిర్మాణం (hierarchy) డ్రాగ్-అండ్-డ్రాప్ (drag-and-drop) ప్రక్రియను సులభతరం చేస్తుంది. కాలమ్స్ మధ్య టాస్క్‌ను మార్చడం అనేది కేవలం ఒక ఫీల్డ్ అప్‌డేట్ మాత్రమే.

• Task: ఇది ప్రధాన మోడల్. దీనికి User మోడల్‌తో రెండు వేర్వేరు రిలేషన్స్ ఉన్నాయి:

• Comment: యూజర్లు టాస్క్‌లపై కామెంట్‌లు చేయవచ్చు. కోడ్ చదవడానికి సులభంగా ఉండటం కోసం నేను రిలేషన్‌కు "user" బదులుగా "author" అని పేరు పెట్టాను.

• Notification: యూజర్ల సందేశాలను ట్రాక్ చేయడానికి ఒక సాధారణ మోడల్.

నేర్చుకున్న సాంకేతిక పాఠాలు

దీనిని నిర్మిస్తున్నప్పుడు నేను కొన్ని లోపాలను ఎదుర్కొన్నాను. వీటి పట్ల జాగ్రత్తగా ఉండండి:

స్కీమా ఇప్పుడు మైగ్రేట్ చేయబడింది. తదుపరి దశలో, రియల్-టైమ్ అప్‌డేట్‌ల కోసం నేను Express బ్యాకెండ్ మరియు Socket.io సెటప్‌ను నిర్మిస్తాను.

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