ప్రాజెక్ట్ మేనేజ్‌మెంట్ బ్యాకెండ్‌ను నిర్మించడం

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

ఇది సరళీకృత Trello లేదా Asana లాగా పనిచేస్తుంది. వినియోగదారులు ప్రాజెక్ట్‌లను సృష్టించవచ్చు, సభ్యులను ఆహ్వానించవచ్చు మరియు బోర్డుల మధ్య టాస్క్‌లను తరలించవచ్చు. దీనిని నడపడానికి నేను Express.js, Prisma మరియు Socket.io ఉపయోగిస్తున్నాను.

బ్యాకెండ్‌ను నిర్మిస్తున్నప్పుడు నేను నేర్చుకున్న సాంకేతిక పాఠాలు ఇక్కడ ఉన్నాయి.

డేటా రిలేషన్‌షిప్‌లను నిర్వహించడం

వినియోగదారులు మరియు ప్రాజెక్ట్‌ల మధ్య many-to-many రిలేషన్‌షిప్ ఉంటుంది. వాటిని అనుసంధానించడానికి నేను ProjectMember టేబుల్‌ను ఉపయోగిస్తున్నాను. ఈ టేబుల్ యూజర్ రోల్ వంటి అదనపు డేటాను నిల్వ చేస్తుంది.

నేను ఈ టేబుల్‌కు ఒక unique constraintని జోడించాను. దీనివల్ల ఒక ప్రాజెక్ట్‌లో ఒక వినియోగదారు ఒకేసారి కనిపిస్తారని నిర్ధారించవచ్చు. ఇది వేగవంతమైన లుకప్‌ల కోసం ఒక composite keyని కూడా సృష్టిస్తుంది.

Kanban బోర్డు కోసం, నేను విషయాలను సరళంగా ఉంచాను. ఒక టాస్క్ స్టేటస్ అది ఏ బోర్డుకు చెందినదో దాని ద్వారా నిర్ణయించబడుతుంది. ఒక టాస్క్‌ను "To Do" నుండి "Done"కి మార్చడం అంటే దాని board IDని అప్‌డేట్ చేయడం మాత్రమే.

ఆర్కిటెక్చర్ తప్పులు

డేటాబేస్ కనెక్షన్‌ల గురించి నేను ఒక కఠినమైన పాఠాన్ని నేర్చుకున్నాను. ప్రతి రూట్ ఫైల్‌లో కొత్త PrismaClientని సృష్టించకండి. ఇది చాలా ఎక్కువ కనెక్షన్‌లను సృష్టించి, మీ యాప్‌ను క్రాష్ చేస్తుంది.

దానికి బదులుగా, ఒకే ఫైల్‌లో ఒకే షేర్డ్ ఇన్‌స్టెన్స్‌ను సృష్టించండి. ఆ ఇన్‌స్టెన్స్‌నే ప్రతి రూట్‌లోకి ఇంపోర్ట్ చేయండి. ఇది మీ కనెక్షన్ పూల్‌ను స్థి

  1. రూట్ క్రమం (Route Order): Express రూట్‌లను పై నుండి కింద వరకు మ్యాచ్ చేస్తుంది. మీరు ఒక పారామీటర్ ఉన్న రూట్‌ను ఒక నిర్దిష్ట (specific) రూట్‌కు ముందు ఉంచితే, Express తప్పు రూట్‌ను మ్యాచ్ చేస్తుంది. ఎల్లప్పుడూ పారామీటరైజ్డ్ (parameterized) రూట్‌ల కంటే నిర్దిష్ట రూట్‌లను పైన ఉంచండి.

ఈ బ్యాకెండ్ ప్యాటర్న్స్ (backend patterns) ఇప్పుడు నా వర్క్‌ఫ్లోలో (workflow) భాగమయ్యాయి.

మూలం: https://dev.to/chinwuba_jeffrey/building-the-backend-for-a-project-management-tool-express-prisma-and-the-mistakes-i-made-along-5gia