Backend Architecture
Architecture backend du projet AKFC
Backend Architecture
Le backend du projet repose sur une architecture modulaire et typée.
Les objectifs principaux sont :
- maintenir une séparation claire des responsabilités
- garantir un typage fort entre les couches
- rendre le code facilement testable et maintenable
Vue d'ensemble#
Les principales briques backend sont :
- Next.js API routes
- tRPC
- Prisma
- Zod
- DTO
- Guards
Ces éléments travaillent ensemble pour former une architecture cohérente.
tRPC comme couche API#
L'API du projet est construite avec tRPC.
Cela permet :
- un typage partagé entre frontend et backend
- une réduction du boilerplate
- une meilleure expérience développeur
Chaque domaine fonctionnel expose son propre router.
Exemples :
auth.routercourse.routercategory.router
Prisma comme couche d'accès aux données#
Prisma est utilisé pour interagir avec la base PostgreSQL.
Prisma apporte :
- un client fortement typé
- des migrations structurées
- une modélisation claire de la base de données
Le schéma Prisma sert de source de vérité pour le modèle de données.
Validation avec Zod#
Toutes les entrées API sont validées avec Zod.
Cela permet :
- de sécuriser les entrées utilisateur
- de documenter les structures attendues
- de générer des types TypeScript automatiquement
DTO (Data Transfer Objects)#
Les DTO servent à contrôler ce qui est exposé par l'API.
Ils permettent notamment de :
- cacher certains champs internes
- transformer les données
- stabiliser les réponses API
Guards#
Les guards permettent de protéger certaines opérations.
Exemples :
- vérifier qu'un utilisateur est connecté
- vérifier qu'un utilisateur possède un rôle particulier
Les guards constituent la couche d'autorisation du backend.
Organisation des dossiers#
Le backend est structuré par domaine fonctionnel.
Exemple :
authcoursescategoriesposts
Chaque domaine contient généralement :
- les routes tRPC
- les schémas Zod
- les services
- les DTO
Pourquoi cette architecture#
Cette organisation permet :
- une meilleure lisibilité
- une forte modularité
- une évolutivité du projet
Elle correspond également aux pratiques modernes du développement full‑stack TypeScript.
Lien avec le frontend#
Grâce à tRPC et TypeScript :
- les types sont partagés
- les appels API sont typés
- les erreurs sont détectées plus tôt
Cela réduit considérablement les erreurs entre frontend et backend.
Étape suivante#
Maintenant que l'architecture backend est claire, la prochaine étape logique est d'explorer :
- le système d'authentification
- la structure des routers tRPC