110 lines
3.2 KiB
Markdown
110 lines
3.2 KiB
Markdown
|
|
# Météo Exam
|
|||
|
|
|
|||
|
|
Le calendrier des évaluations scolaires, traduit en bulletin météorologique interactif.
|
|||
|
|
Application Android (Capacitor) + API Node.js.
|
|||
|
|
|
|||
|
|
## Structure
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
meteo-exam/
|
|||
|
|
├── shared/ Types + correspondance type d'éval ↔ météo
|
|||
|
|
├── server/ API Express + SQLite (classes, évaluations, SSE)
|
|||
|
|
├── web/ Front Vite + TypeScript (compilé dans Capacitor)
|
|||
|
|
│ └── android/ Projet Capacitor Android
|
|||
|
|
└── design/prototype/meteo-exam-reference.html Prototype visuel d'origine
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Démarrage rapide
|
|||
|
|
|
|||
|
|
### 1. Installer les dépendances
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd meteo-exam
|
|||
|
|
npm install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Lancer le serveur
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Base de démonstration (Terminale S2, code d'invitation TERMS2)
|
|||
|
|
npm run seed
|
|||
|
|
|
|||
|
|
# Serveur API (port 8787)
|
|||
|
|
npm run dev:server
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Lancer le front en développement
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm run dev:web
|
|||
|
|
# → http://localhost:5173
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. Builder l'APK Android
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd web
|
|||
|
|
npx cap sync android
|
|||
|
|
cd android
|
|||
|
|
./gradlew assembleDebug
|
|||
|
|
# → android/app/build/outputs/apk/debug/app-debug.apk
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Comptes de démonstration
|
|||
|
|
|
|||
|
|
| Rôle | Classe | Code | Pseudo |
|
|||
|
|
|------|--------|------|--------|
|
|||
|
|
| Admin | Terminale S2 | `TERMS2` | `Thomas S.` |
|
|||
|
|
| Élève | Terminale S2 | `TERMS2` | n'importe quel |
|
|||
|
|
|
|||
|
|
L'admin peut ajouter / modifier / supprimer les évaluations.
|
|||
|
|
Les élèves consultent et reçoivent les mises à jour en temps réel (SSE).
|
|||
|
|
|
|||
|
|
## Configuration
|
|||
|
|
|
|||
|
|
### Serveur
|
|||
|
|
|
|||
|
|
| Variable | Défaut | Description |
|
|||
|
|
|----------|--------|-------------|
|
|||
|
|
| `PORT` | `8787` | Port d'écoute de l'API |
|
|||
|
|
| `METEO_DB` | `server/data/meteo-exam.db` | Chemin du fichier SQLite |
|
|||
|
|
| `METEO_ORIGINS` | `*` | Origines CORS autorisées (séparez par une virgule) |
|
|||
|
|
|
|||
|
|
### App Android
|
|||
|
|
|
|||
|
|
Dans l'onglet **Plus** de l'app, l'adresse du serveur est configurable.
|
|||
|
|
Sur l'émulateur Android, utilisez `http://10.0.2.2:8787` (l'hôte de la machine).
|
|||
|
|
Sur un téléphone physique, utilisez l'IP locale de la machine qui tourne le serveur.
|
|||
|
|
|
|||
|
|
## API
|
|||
|
|
|
|||
|
|
| Méthode | Route | Accès | Description |
|
|||
|
|
|---------|-------|-------|-------------|
|
|||
|
|
| `POST` | `/api/classes` | public | Créer une classe → `{ token, code, member, klass }` |
|
|||
|
|
| `POST` | `/api/classes/join` | public | Rejoindre via un code |
|
|||
|
|
| `GET` | `/api/classes/me` | membre | Session courante |
|
|||
|
|
| `GET` | `/api/exams?from&to` | membre | Liste des évaluations |
|
|||
|
|
| `POST` | `/api/exams` | admin | Ajouter une évaluation |
|
|||
|
|
| `PATCH` | `/api/exams/:id` | admin | Modifier |
|
|||
|
|
| `DELETE` | `/api/exams/:id` | admin | Supprimer |
|
|||
|
|
| `GET` | `/api/stream` | membre | Flux SSE (ping + exam.created/updated/deleted) |
|
|||
|
|
|
|||
|
|
Authentification : `Authorization: Bearer <token>` ou `?token=` (SSE uniquement).
|
|||
|
|
|
|||
|
|
## Statuts météo
|
|||
|
|
|
|||
|
|
| Icône | Nom | Coefficient | Signification |
|
|||
|
|
|-------|-----|-------------|---------------|
|
|||
|
|
| ☀️ | Grand Soleil | 0 | Aucune évaluation |
|
|||
|
|
| 🌫️ | Brouillard | — | Rumeur non confirmée |
|
|||
|
|
| 💨 | Coup de vent | 1 | Interro surprise, coeff faible |
|
|||
|
|
| 🌩️ | Orage | 2–3 | DS / contrôle continu |
|
|||
|
|
| 🚨 | Alerte Rouge | 4+ | Examen blanc / épreuve commune |
|
|||
|
|
|
|||
|
|
## Phase 2 (prévu)
|
|||
|
|
|
|||
|
|
- Radar de rumeurs (vote communautaire, seuil de conversion 65 %)
|
|||
|
|
- Métriques : pression atmosphérique (coefficient) + indice de vigilance 1-5
|
|||
|
|
- Flash info du jour généré automatiquement
|
|||
|
|
- PWA / service worker
|