Skip to content

THEab01/SMART_CAMPUS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SMART CAMPUS — INPT

Plateforme centralisée pour le campus INPT regroupant la gestion de la buvette, le suivi des présences, la carte restaurant, les rapports de maintenance et les actualités du campus.

Disponible en application web (React + TypeScript) et application mobile (Flutter), toutes deux connectées à une API REST (FastAPI + SQLite).


Architecture

SMART_CAMPUS/
├── frontend/     # Application web — React + TypeScript
│   ├── src/
│   │   └── app/
│   │       ├── pages/        # Pages par rôle (student, professor, cafeteria, admin, maintenance)
│   │       ├── components/   # Composants réutilisables
│   │       ├── context/      # Auth context (React Context API)
│   │       └── api.ts        # Client HTTP centralisé
│   ├── index.html
│   ├── vite.config.ts
│   └── package.json
├── backend/      # API REST — FastAPI + SQLite
│   ├── main.py           # Routes et logique métier
│   ├── models.py         # Modèles SQLAlchemy
│   ├── schemas.py        # Schémas Pydantic
│   ├── auth.py           # JWT, bcrypt, TOTP
│   └── seed.py           # Données initiales
└── mobile/       # App mobile — Flutter
    └── lib/
        ├── screens/      # Écrans par rôle
        ├── services/     # AppState (Provider) + client API
        ├── models/       # Modèles Dart
        └── theme/        # Thème Material

Rôles & fonctionnalités

🎓 Étudiant

Écran Description
Dashboard Solde carte restaurant, résumé des absences du jour, dernières commandes
Buvette Parcourir le menu par catégorie, ajouter au panier, passer commande — le solde est déduit immédiatement
Mes commandes Historique avec statut (en attente, en préparation, prête, retirée) et QR code de retrait
Présences Scanner le QR code du professeur pour pointer ; historique par cours
Recharge Recharger sa carte via virement, espèces ou carte bancaire ; historique des transactions
Maintenance Soumettre un rapport de panne (titre, lieu, catégorie, priorité) ; suivre ses rapports
Actualités Annonces et événements du campus, articles épinglés en tête de liste

👨‍🏫 Professeur

Écran Description
Mes cours Liste des cours assignés avec horaires et effectifs
Session de présence Démarrer une session → afficher le QR code TOTP (rotation toutes les 30 s) → voir les présents en temps réel

🍽️ Buvette

Écran Description
Commandes Tableau Kanban : en attenteen préparationprête
Scanner QR Scanner le QR de l'étudiant pour valider le retrait
Gestion du menu Ajouter / modifier des articles, activer/désactiver, gérer les stocks

🔧 Maintenance

Écran Description
Rapports Liste filtrables par statut (ouvert, en cours, résolu) et catégorie
Prise en charge Assigner, changer le statut, ajouter un commentaire

🛡️ Admin

Écran Description
Utilisateurs Consulter tous les comptes, modifier les soldes
Commandes / Rapports Vue globale
Actualités Créer, modifier, épingler ou supprimer des annonces

Flux QR Code

Présence (TOTP)

Professeur                     Backend                        Étudiant
    │── POST /attendance/session ──▶│                               │
    │◀── { sessionId, secret } ─────│                               │
    │  Affiche QR: "SESSION_ID:TOKEN"  (HMAC-SHA1, rotation 30s)    │
    │                               │◀── POST /attendance/scan ─────│
    │                               │── valide TOTP → présence ─────│
  • Token expiré (> 30 s) rejeté. Un étudiant ne peut pointer qu'une fois par session.

Paiement buvette

Étudiant                        Backend                       Caissier
    │── POST /orders ────────────▶│                               │
    │◀── QR: { orderId, token, amount } ──────────────────────────│
    │  (solde déjà déduit)        │◀── PATCH /orders/:id/status ──│
    │                             │── commande → retirée ─────────│

Lancer le projet

1. Backend (FastAPI)

cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
venv/bin/uvicorn main:app --reload
  • API : http://localhost:8001
  • Docs Swagger : http://localhost:8001/docs
  • La base SQLite est créée et peuplée automatiquement au premier démarrage.

2. Frontend web (React)

cd frontend
npm install
npm run dev

Accès : http://localhost:5173

Créer frontend/.env :

VITE_API_URL=http://localhost:8001/api

3. Application mobile (Flutter)

cd mobile
flutter pub get
flutter run

Configurer l'URL dans lib/services/config.dart :

const String kApiBase = 'http://10.0.2.2:8001/api';       // émulateur Android
const String kApiBase = 'http://192.168.x.x:8001/api';    // appareil physique

Comptes de test

Rôle ID Mot de passe
Étudiant s001 / s002 / s003 password
Professeur p001 / p002 password
Buvette c001 password
Maintenance m001 password
Admin a001 password

Stack technique

Couche Technologies
Frontend web React 18, TypeScript, Vite, React Router v7, Tailwind CSS, shadcn/ui
Backend Python 3, FastAPI, SQLAlchemy, SQLite, JWT (python-jose), bcrypt, Pydantic v2
Mobile Flutter / Dart (SDK ≥ 3.0), Provider, go_router, qr_flutter, mobile_scanner

API — Endpoints principaux

Méthode Route Rôle Description
POST /api/auth/login Connexion → token JWT
GET /api/auth/me tous Utilisateur courant
GET /api/menu tous Liste du menu
POST /api/orders étudiant Passer une commande
PATCH /api/orders/:id/status buvette Changer le statut
POST /api/attendance/session professeur Démarrer une session
POST /api/attendance/scan étudiant Pointer sa présence
POST /api/maintenance étudiant Soumettre un rapport
PATCH /api/maintenance/:id/status maintenance Mettre à jour un rapport
POST /api/recharge étudiant Recharger la carte
GET /api/news tous Actualités
GET /api/users admin Liste des utilisateurs
PATCH /api/users/:id/balance admin Modifier le solde

Documentation complète : http://localhost:8001/docs

About

Plateforme centralisée pour le campus INPT regroupant la gestion de la buvette, le suivi des présences, la carte restaurant, les rapports de maintenance et les actualités du campus.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors