Cette section présente l’architecture globale de l’application Nexus. L’ensemble des composants nécessaires au fonctionnement du système au sein d’un même dépôt.

L’application repose sur une architecture en plusieurs couches, permettant de séparer clairement les responsabilités et de faciliter la maintenance ainsi que l’évolution du projet.

Organisation générale

Le projet est structuré autour de plusieurs modules principaux :

  • API (api/app/) : constitue le backend de l’application. Elle gère les fonctionnalités principales telles que l’authentification (JWT), la gestion des utilisateurs, des transactions, ainsi que les opérations administratives et les journaux d’activité.

  • Web (web/public/) : correspond à l’interface utilisateur développée en Vue.js. Elle permet aux utilisateurs d’interagir avec l’application via un navigateur.

  • Mobile (mobile/) : application mobile développée avec Flutter, utilisant la même API que le frontend web.

  • Données : la persistance des données est assurée par une base de données PostgreSQL.

Architecture du backend

Le backend suit une architecture en couches, favorisant une bonne organisation du code :

  • Couche domaine : contient les entités métier et la logique principale

  • Couche application : regroupe les cas d’usage

  • Couche infrastructure : gère l’accès aux données et les services externes

  • Couche HTTP : expose les fonctionnalités via une API REST (framework Slim)

Cette organisation permet une séparation claire entre la logique métier et les aspects techniques.

Infrastructure et déploiement

L’application est entièrement conteneurisée grâce à Docker. Chaque service est isolé dans un conteneur spécifique :

  • Frontend servi via un serveur web (nginx)

  • API exécutée via un serveur PHP intégré

  • Base de données PostgreSQL

  • Outils complémentaires comme Adminer (gestion de bdd) et Mailpit (gestion des emails)

Cette architecture modulaire et découplée permet à l’application Nexus d’être évolutive, maintenable et facilement déployable dans différents environnements.