EME — Emprunt Matériel ENSUP
EME est une application web de gestion des emprunts de matériel pédagogique pour ENSUP / Ensitech.
La V1 couvre le parcours étudiant : consulter le catalogue, emprunter un matériel, restituer un emprunt et détecter automatiquement les retours non conformes.
Stack
| Couche | Technologie |
|---|---|
| Frontend | Flutter Web |
| Backend | Express.js + TypeScript |
| Base de données | SQL Server 2022 |
| ORM | Prisma |
| Conteneurs | Docker Compose |
| Interface BDD | Adminer |
Structure
eme_app/
├── compose.yaml
├── CONTEXT.md
├── TODO.md
├── review.md
├── docs/
├── eme-backend/
└── eme-frontend/
Documents utiles :
CONTEXT.md: contexte projet, stack, acteurs, modèle et charte.TODO.md: plan d'action et reste à faire.review.md: journal des décisions et état courant.docs/regles-metier/regles-gestion.md: règles métier validées.
Prérequis
- Docker Desktop
- Node.js + npm
- Flutter SDK avec support Web
- Git
Vérifications rapides :
docker --version
node --version
npm --version
flutter --version
Configuration
Docker
Le fichier racine .env doit fournir le mot de passe SQL Server utilisé par compose.yaml :
MSSQL_SA_PASSWORD=EmePass2026!
Backend
Créer eme-backend/.env à partir de eme-backend/.env.example, puis vérifier que le mot de passe correspond à celui du .env racine.
Exemple de configuration locale :
PORT=3000
NODE_ENV=development
FRONTEND_URL=http://localhost:5000
DATABASE_URL="sqlserver://localhost:1433;database=eme_db;user=sa;password=EmePass2026!;encrypt=true;trustServerCertificate=true"
DB_SERVER=localhost
DB_PORT=1433
DB_NAME=eme_db
DB_USER=sa
DB_PASSWORD=EmePass2026!
AZURE_TENANT_ID=ton_tenant_id
AZURE_CLIENT_ID=ton_client_id
Azure AD n'est pas encore branché en V1 locale : l'authentification est simulée via x-user-email.
Installation
Depuis la racine :
cd eme-backend
npm install
cd ../eme-frontend
flutter pub get
Lancement local
1. Démarrer SQL Server et Adminer
Depuis la racine :
docker compose up -d
Services :
- SQL Server :
localhost:1433 - Adminer :
http://localhost:8081
2. Préparer la base
Depuis eme-backend :
npm run prisma:generate
npx prisma migrate deploy
npm run seed
npm run fixtures
Les fixtures ajoutent des utilisateurs, du matériel, des emprunts et des anomalies de démonstration.
3. Démarrer le backend
Depuis eme-backend :
npm run dev
API :
http://localhost:3000
Contrôle rapide :
curl http://localhost:3000/health
4. Démarrer le frontend
Depuis eme-frontend :
flutter run -d web-server --web-port 5000
Application :
http://localhost:5000
Parcours de démo V1
- Ouvrir
http://localhost:5000. - S'identifier avec l'option mail ENSUP ou carte étudiante.
- Cliquer sur
Emprunter. - Sélectionner un matériel disponible.
- Valider la checklist de départ.
- Vérifier la confirmation de l'emprunt.
- Revenir à l'accueil.
- Cliquer sur
Restituer. - Sélectionner un emprunt en cours.
- Valider un retour conforme ou indiquer un élément absent/détérioré.
- Vérifier le résultat conforme ou non conforme.
Endpoints principaux
| Méthode | Route | Description |
|---|---|---|
GET |
/health |
Santé API |
GET |
/api/auth/me |
Profil utilisateur courant |
GET |
/api/auth/carte/:qr |
Identification par QR code |
GET |
/api/materiels |
Catalogue disponible |
GET |
/api/materiels/:id |
Détail matériel |
POST |
/api/emprunts |
Création d'un emprunt |
GET |
/api/mes-emprunts |
Emprunts en cours de l'utilisateur |
POST |
/api/emprunts/:id/restitution |
Restitution |
En local, les routes protégées utilisent l'en-tête :
x-user-email: lucas.martin@ensitech.eu
Vérifications
Backend :
cd eme-backend
npm run build
npm run lint
Frontend :
cd eme-frontend
flutter analyze
Note : dans l'environnement Codex, flutter analyze et dart format ont déjà bloqué au timeout. Les relancer dans un terminal local Flutter si nécessaire.
État V1
Terminé pour la V1 étudiant :
- catalogue matériel ;
- détail matériel ;
- emprunt avec checklist de départ ;
- restitution avec checklist de retour ;
- détection automatique de retour non conforme ;
- fixtures de démonstration ;
- tests runtime manuels du parcours étudiant.
Reste à faire :
- authentification Azure AD réelle ;
- parcours responsable matériel ;
- OpenAPI / Swagger ;
- tests automatisés ;
- documentation utilisateur complète ;
- déploiement production.