Het bouwen van een backend voor projectmanagement
Ik bouw een collaboratieve projectmanagementtool voor mijn stage bij CodeAlpha.
Het werkt als een vereenvoudigde versie van Trello of Asana. Gebruikers maken projecten aan, nodigen leden uit en verplaatsen taken tussen borden. Ik gebruik Express.js, Prisma en Socket.io om het aan te sturen.
Hier zijn de technische lessen die ik heb geleerd tijdens het bouwen van de backend.
Het beheren van datarelaties
Gebruikers en projecten hebben een many-to-many-relatie. Ik gebruik een ProjectMember-tabel om ze met elkaar te verbinden. Deze tabel slaat extra gegevens op, zoals de gebruikersrol.
Ik heb een unique constraint toegevoegd aan deze tabel. Dit zorgt ervoor dat een gebruiker slechts één keer per project voorkomt. Het creëert ook een composite key voor snelle zoekopdrachten.
Voor het Kanban-bord hield ik het simpel. De status van een taak wordt bepaald door het bord waartoe deze behoort. Een taak verplaatsen van "To Do" naar "Done" is simpelweg een kwestie van het bijwerken van de board ID.
Architectuurfouten
Ik heb een harde les geleerd over databaseverbindingen. Maak niet in elk routebestand een nieuwe PrismaClient aan. Dit zorgt voor te veel verbindingen en laat je app crashen.
Maak in plaats daarvan één gedeelde instantie aan in een enkel bestand. Importeer diezelfde instantie in elke route. Dit houdt je connection pool stabiel.
Autorisatie en beveiliging
Ik gebruik een protect-middleware om routes te beveiligen. Deze controleert de JWT in de Authorization-header.
- Routevolgorde: Express matcht routes van boven naar beneden. Als je een route met een parameter vóór een specifieke route plaatst, matcht Express de verkeerde. Plaats specifieke routes altijd boven geparametriseerde routes.
Deze backend-patronen maken nu deel uit van mijn workflow.