← Retour

SMA — Intranet maintenance automobile en cours

Repository GitHub

Objectif

SMA est une application intranet de maintenance automobile développée comme un projet terrain. L’objectif n’est pas seulement de gérer des données métier, mais de construire un socle applicatif traçable, sécurisé, maintenable et auditable.

Le projet met l’accent sur l’architecture backend Java/Spring, la séparation des responsabilités, la sécurité OAuth2/OIDC, la conformité RGPD, les logs structurés et le versionnement fiable des évolutions SQL.

SMA sert aussi de support pour travailler des problématiques proches d’un système réel : contrôle d’accès, audit métier, historique des actions, exploitation locale reproductible et qualité logicielle continue.


Compétences démontrées


Stack actuelle


Architecture

Le projet applique les principes CQRS et Event Sourcing. Les commandes, événements, projections et contrôles d’audit sont séparés pour garder une trace claire des changements métier.

Utilisateur Frontend Spring MVC · Thymeleaf Pages métier · appels REST · logs UI Backend Spring Boot · WebFlux · Axon · JPA API métier · commandes · queries RBAC · ownership · logs · audit RGPD Axon Server Command bus · Query bus Event bus · Event store PostgreSQL métier Données métier Lectures optimisées Flyway Base audit audit_events contrôles · preuves RGPD Keycloak OAuth2 · OpenID Connect JWT rôles ADMIN · USER · AUDITOR PostgreSQL Keycloak Realm · clients · utilisateurs HTTP REST login token
Utilisateur HTTP Frontend Spring MVC · Thymeleaf Pages métier · appels REST · logs UI REST Backend Spring Boot · WebFlux · Axon · JPA API métier · commandes · queries RBAC · ownership · logs · audit RGPD Axon Server Command / Query Event store PostgreSQL métier Données métier Lectures optimisées Flyway Base audit preuves contrôles RGPD Keycloak OAuth2 · OpenID Connect JWT rôles ADMIN · USER · AUDITOR PostgreSQL Keycloak realm · clients · utilisateurs
Utilisateur HTTP Frontend Spring MVC · Thymeleaf Pages métier · appels REST · logs UI REST Backend Spring Boot · WebFlux · Axon · JPA API métier · commandes · queries RBAC · ownership · logs · audit RGPD Axon Server Command / Query Event store PostgreSQL métier Lectures optimisées Flyway Base audit preuves contrôles RGPD Keycloak OAuth2 · OpenID Connect JWT rôles ADMIN · USER · AUDITOR PostgreSQL Keycloak realm · clients · utilisateurs Frontend ↔ Keycloak : authentification OAuth2/OIDC Backend → Axon / PostgreSQL : traitements métier Base audit : preuves et contrôles indépendants

Organisation du projet


Sécurité : RBAC et propriété des ressources

Le projet intègre maintenant un contrôle d’accès basé sur les rôles et sur la propriété des ressources. Les tokens JWT Keycloak sont validés côté backend, puis les rôles sont extraits depuis les claims du token.

Les lectures par identifiant et les listes sont filtrées afin d’éviter les accès directs non autorisés aux objets métier, notamment les risques de type IDOR.


Logs et audit

Une politique de logs complète a été ajoutée afin de distinguer les événements métier, techniques et sécurité. Les logs frontend et backend sont séparés, avec des fichiers dédiés selon leur usage.

Une base d’audit dédiée permet également de suivre les preuves opérationnelles et les attentes d’un audit indépendant. L’objectif est de rendre les contrôles consultables, historisés et exploitables.


CQRS / Axon : flux de création

Le flux de création a été stabilisé afin d’éviter les incohérences entre l’envoi d’une commande Axon et la persistance effective de la projection en base.

HTTP POST
  → CommandController
  → CommandService
  → CommandGateway Axon
  → Aggregate @CommandHandler
  → apply(*CreatedEvent)
  → EventHandler Axon
  → persistance JPA
  → publication d’un Spring ApplicationEvent après persistance
  → complétion de la CompletableFuture
  → réponse HTTP

Roadmap


Exécution locale

Services disponibles en local

Profils et modes