Architecture technique - 0x485254/brief-26 GitHub Wiki

🧱 Architecture Technique – EasyGroup

Ce document décrit l’architecture globale du projet EasyGroup, en précisant les modules techniques, la stack choisie, et les interactions entre les composants.


🧰 Stack technique

Côté Technologie
Frontend Angular 17+, TypeScript
Backend Java 17, Spring Boot
Base de données MySQL ou MariaDB
Authentification Spring Security (JWT recommandé)
Tests JUnit, Mockito
CI/CD GitLab CI
Conteneurs Docker, Caddy

🔗 Architecture logique

+------------------+        HTTPS        +-------------------+
|     Frontend     |  <----------------> |   Backend Spring   |
|  (Angular SPA)   |                    |   Boot REST API    |
+------------------+                    +-------------------+
        |                                         |
        v                                         v
+------------------+                    +-------------------+
| Authentification |                    |  Base de données   |
| (JWT / Session)  |                    |  relationnelle     |
+------------------+                    +-------------------+

🧩 Découpage du backend

Le backend est organisé en modules métiers, chacun possédant :

  • une entité (entity)
  • un contrôleur (controller)
  • un service (service)
  • un repository JPA (repository)
  • des DTO (dto) pour exposer les données

Modules :

  • Authentification (Auth)
  • Utilisateurs (User)
  • Listes de personnes (List, ListShare)
  • Personnes (Person)
  • Tirages (Draw)
  • Groupes (Group, GroupPerson)

🌐 API REST

L’API suit une structure RESTful avec préfixe /api.

Ressource Exemple de route
Auth POST /api/auth/login
Utilisateur GET /api/users/me
Listes GET /api/lists
Personnes POST /api/lists/{id}/persons
Tirages POST /api/lists/{id}/draws
Groupes GET /api/draws/{id}/groups

🛡 Sécurité

  • Authentification par JWT (ou session HTTP Only)
  • Spring Security + CORS config
  • Accès public restreint aux routes d’inscription/connexion

🧪 Tests

  • Couverture des services et contrôleurs
  • Données mockées avec Mockito
  • Tests unitaires : JUnit5
  • TDD recommandé (test-first)

🚢 Déploiement

  • Dockerisation des services : backend, frontend, db
  • Proxy : Nginx Proxy Manager
  • CI/CD GitLab : test + build + push

⚠️ **GitHub.com Fallback** ⚠️