Étude de cas documentée
Application Web Full-Stack
Plateforme E-learning AYJI

Contexte
AYJI est une Single Page Application éducative offrant un espace étudiant complet (dashboard, catalogue de cours, quiz interactifs) et un back-office administrateur. Construite avec Angular 19 et NgRx pour une gestion d'état robuste, elle intègre Socket.io pour les notifications en temps réel.
- Objectif
- Créer une alternative LMS moderne et accessible aux plateformes étrangères coûteuses
Architecture frontend
AYJI · Carte des responsabilités frontend
01 · Interface pédagogique
Angular 19
- Cours
- Quiz
- Progression
02 · Responsabilités de gestion de l’état
NgRx
- Store
- État applicatif centralisé
- Effects
- Effets de bord et traitements asynchrones
- Entity
- Outils de gestion des collections
03 · Flux asynchrones réactifs
RxJS
Flux réactifs et gestion d’événements
04 · Notifications en temps réel
Socket.io-client
Transport d’événements en temps réel
Fonctionnalités
- Tableau de bord étudiant avec progression et statistiques d'apprentissage
- Catalogue de cours avec navigation intuitive et filtrage avancé
- Lecteur PDF intégré et interface de cours optimisée
- Quiz interactifs (QCM) avec correction automatique et feedback immédiat
- Gestion d'état centralisée avec NgRx (Store, Effects, Entity)
- Notifications temps réel avec Socket.io-client
- Back-office complet pour la gestion des utilisateurs et contenus
- Interface responsive (Desktop, Tablette, Mobile) avec SCSS
Preuves du projet
- Architecture
- Angular + NgRx
- Données
- MongoDB
- Notifications
- Socket.io
Technologies
- Angular 19
- TypeScript
- NgRx
- RxJS
- Node.js
- MongoDB
- Mongoose
- Redis
- Socket.io
- PouchDB
- Cypress
- SCSS
Ce que j'ai appris
- Architecture Frontend avancée : Maîtrise de NgRx (Store, Effects, Entity)
- Base de données : MongoDB + Mongoose (backend), Redis (cache/sessions), PouchDB (offline)
- Programmation réactive : Utilisation poussée de RxJS pour l'asynchrone
- WebSockets & Temps réel : Intégration Socket.io pour les notifications
- Bonnes pratiques Angular : Lazy loading, guards, interceptors, modularité