Architecture Map

Vue d'ensemble de l'architecture du projet AKFC

Architecture Map

Cette page donne une vue globale de l'architecture du projet AKFC.

Elle permet de comprendre rapidement comment les différentes couches du projet interagissent.

Le projet suit une architecture full‑stack moderne basée sur TypeScript.


Vue d'ensemble

Frontend (Next.js)
        │
        ▼
tRPC API Layer
        │
        ▼
Backend Services
        │
        ▼
Prisma ORM
        │
        ▼
PostgreSQL Database

En parallèle :

TipTap Editor
      │
      ▼
Cloudinary Upload Pipeline
      │
      ▼
Cloudinary Storage

Frontend

Le frontend est construit avec Next.js App Router.

Responsabilités principales :

  • rendu des pages
  • formulaires
  • affichage des données
  • gestion de l'état côté client

Le frontend ne parle jamais directement à la base de données.


tRPC Layer

tRPC sert de couche d'API typée entre frontend et backend.

Avantages :

  • typage end‑to‑end
  • pas de duplication des types
  • API plus sûre

Flux typique :

React Component
      ↓
tRPC hook
      ↓
tRPC router

Backend Services

Les services backend contiennent la logique métier du projet.

Ils orchestrent :

  • validation
  • règles métier
  • accès à la base de données
  • gestion des erreurs

Cette couche permet de ne pas mélanger logique métier et accès aux données.


Prisma ORM

Prisma agit comme couche d'accès à la base de données.

Il permet :

  • requêtes typées
  • migrations
  • génération de client TypeScript

Exemple :

await prisma.user.findUnique({
  where: { email }
})

Database

La base de données utilisée est PostgreSQL.

Elle stocke :

  • utilisateurs
  • rôles
  • permissions
  • cours
  • catégories
  • contenus

Cloudinary

Cloudinary est utilisé pour :

  • stockage des images
  • transformations d'image
  • gestion des médias

Le projet inclut un Cloudinary Finder custom.


Résumé

Architecture simplifiée :

Next.js UI
     ↓
tRPC API
     ↓
Backend Services
     ↓
Prisma ORM
     ↓
PostgreSQL

Et pour les médias :

TipTap Editor
      ↓
Cloudinary Upload
      ↓
Cloudinary Storage