Technologies Utilisées
Architecture Globale
Le projet Moodle est construit selon une architecture moderne de type client-serveur, avec une séparation claire entre le frontend et le backend. Cette architecture permet une maintenance facilitée, une évolution indépendante des composants et une meilleure répartition des responsabilités.
Technologies Frontend
Angular
Le frontend de l'application est développé avec Angular, un framework JavaScript/TypeScript développé par Microsoft. Angular a été choisi pour plusieurs raisons :
Architecture MVC (Modèle-Vue-Contrôleur) qui favorise une organisation claire du code
Système de composants permettant la réutilisation et la maintenance facilitée
TypeScript apportant un typage fort et une meilleure détection des erreurs
Réactivité grâce à l'utilisation de RxJS pour la gestion des flux de données
Routage intégré pour la navigation entre les différentes vues
Formulaires réactifs pour une gestion avancée des formulaires et de la validation
Angular Material
L'interface utilisateur s'appuie sur Angular Material, une bibliothèque de composants UI pour Angular qui implémente les principes du Material Design de Google. Cela permet :
Une interface cohérente et moderne
Des composants prêts à l'emploi (boutons, cartes, tableaux, formulaires, etc.)
Une expérience utilisateur optimisée sur différents appareils
Une accessibilité améliorée
Technologies Backend
Node.js et Express
Le backend est construit avec Node.js et le framework Express, offrant :
Un environnement JavaScript unifié entre frontend et backend
Une gestion asynchrone efficace des requêtes
Une scalabilité adaptée aux besoins de l'application
Un écosystème riche de bibliothèques et middlewares
TypeScript
Tout comme le frontend, le backend utilise TypeScript pour :
Un typage fort des données
Les interfaces pour définir les modèles de données
Une meilleure maintenabilité du code
Une détection précoce des erreurs
Une documentation intégrée des interfaces et types
Base de Données
MongoDB
La persistance des données est assurée par MongoDB, une base de données NoSQL orientée documents :
Flexibilité du schéma permettant une évolution facile des modèles de données
Format JSON natif s'intégrant parfaitement avec JavaScript/TypeScript
Performances élevées pour les opérations de lecture/écriture
Scalabilité horizontale adaptée à la croissance de l'application
GridFS
Pour le stockage des fichiers (documents PDF, images, etc.), l'application utilise GridFS, une spécification MongoDB permettant :
Le stockage de fichiers volumineux (>16MB)
La gestion des métadonnées associées aux fichiers
Un streaming efficace pour le téléchargement/upload
Sécurité
JWT (JSON Web Tokens)
L'authentification et l'autorisation sont gérées via JWT:
Stateless authentication ne nécessitant pas de session côté serveur
Sécurité des échanges entre client et serveur
Informations utilisateur encapsulées dans le token
Expiration configurable des sessions
Bcrypt
Pour le hachage sécurisé des mots de passe, l'application utilise bcrypt:
Algorithme de hachage robuste contre les attaques par force brute
Salt automatique pour prévenir les attaques par table arc-en-ciel
Facteur de coût ajustable selon les besoins de sécurité
Outils de Développement
npm pour la gestion des dépendances
Git pour le versionnement du code
ESLint pour l'analyse statique du code
Prettier pour le formatage automatique du code
Architecture Détaillée
Architecture Backend
Le backend suit une architecture modulaire inspirée du modèle MVC (Modèle-Vue-Contrôleur) adaptée à une API REST :
Models: Définition des interfaces TypeScript représentant la structure des documents MongoDB
Services: Logique d'accès à la base de données et opérations métier
Controllers: Traitement des requêtes HTTP et renvoi des réponses
Routes: Définition des endpoints de l'API
Architecture Frontend
Le frontend est organisé selon les principes d'Angular :
Modules: Organisation du code en unités fonctionnelles
Composants: Éléments d'interface réutilisables
Services: Logique métier et communication avec le backend
Guards: Protection des routes selon les droits d'accès