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

  1. Ouvrir http://localhost:5000.
  2. S'identifier avec l'option mail ENSUP ou carte étudiante.
  3. Cliquer sur Emprunter.
  4. Sélectionner un matériel disponible.
  5. Valider la checklist de départ.
  6. Vérifier la confirmation de l'emprunt.
  7. Revenir à l'accueil.
  8. Cliquer sur Restituer.
  9. Sélectionner un emprunt en cours.
  10. Valider un retour conforme ou indiquer un élément absent/détérioré.
  11. 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.
S
Description
Application de gestions d'emprunts de matériels informatique au sein de l'ENSUP/ ENSITECH, développée avec le Stack express et Flutter
Readme 7.5 MiB
Languages
Dart 63.9%
TypeScript 25.7%
TSQL 9.6%
JavaScript 0.6%
HTML 0.2%