# 02 — Fonctionnalités du MVP

Objectif du MVP : un utilisateur se connecte, lie son Google, et dispose des trois briques de
base (agenda, mail, position) dans une version simple mais utilisable.

## A. Comptes & authentification

- [ ] Création de compte (contrôlée — admin/invitation, cf. questions restantes).
- [ ] Connexion / déconnexion (email + mot de passe, JWT cookies).
- [ ] Page profil minimale (changer mot de passe, voir comptes Google liés).

## B. Liaison Google (OAuth)

- [ ] Bouton « Connecter mon compte Google » → flow OAuth 2.0.
- [ ] Stockage chiffré du *refresh token*.
- [ ] Affichage de l'état de connexion + bouton « Déconnecter Google ».
- [ ] Rafraîchissement automatique des access tokens.
- Scopes MVP : **Calendar** + **Gmail** (lecture/écriture selon besoin précisé).

## C. Agenda / prise de RDV (Google Calendar)

- [x] Vue **Semaine** (7 jours de la semaine en cours) et vue **Mois** (grille), avec navigation
  précédent/suivant + « Aujourd'hui ».
- [x] Créer un événement / RDV (titre, début, fin, lieu).
- [x] Supprimer un événement.
- [ ] Modifier un événement existant.
- [ ] Invités, créneaux libres (V2).

## D. Boîte mail (Gmail)

- [x] Liste des emails récents (objet, expéditeur, date, lu/non lu) + pagination.
- [x] Lecture d'un email (contenu HTML/texte, pièces jointes listées).
- [x] Actions de base : marquer lu/non lu, archiver, mettre à la corbeille.
- [ ] Téléchargement des pièces jointes (V2).
- [ ] Envoi/réponse : hors périmètre (scope `gmail.modify` sans envoi).

## D-bis. Google Drive

- [x] Parcourir les dossiers (navigation + fil d'Ariane), recherche.
- [x] Télécharger un fichier (export PDF pour les docs Google natifs), « Ouvrir » dans Drive.
- [x] Gestion (admin/super_admin) : importer (upload), créer un dossier, renommer, corbeille.
- [x] Déplacer un fichier/dossier entre dossiers (couper / « Déplacer ici »).
- [ ] Téléchargement d'un dossier complet (V2).

## E. Suivi de position du téléphone

> Décision : **app OwnTracks** (Android) en mode HTTP privé qui envoie la position en arrière-plan
> vers `POST /backend/track/owntracks/<jeton>`. Carte **Leaflet + OpenStreetMap**.

- [x] Réception et stockage des positions (endpoint OwnTracks, auth par jeton d'appareil).
- [x] Gestion d'appareils (créer, jeton/URL, régénérer, supprimer) — chacun ne voit que les siens.
- [x] Affichage de la dernière position + **trace des déplacements** sur une carte (plages
  Aujourd'hui / 24 h / 7 j), rafraîchissement auto (30 s).
- [x] **Alerte de zone (geofence)** : message WhatsApp quand l'appareil sort d'un rayon (défaut
  50 m) autour d'un point de référence (alerte au franchissement, anti-spam). Config super_admin.
- [ ] Support iOS (V2).

## F. Socle technique transverse

- [ ] Squelette backend Express + Prisma + base `leperelion`.
- [ ] Squelette frontend Next.js (layout, navigation, thème Tailwind).
- [ ] Vhost Apache + PM2 + SSL opérationnels sur https://leperelion.fr.
- [ ] Gestion des erreurs et états de chargement de base.

## Critère de « MVP terminé »

L'utilisateur peut, en HTTPS sur leperelion.fr : se connecter, lier Google, voir/créer un RDV,
lire/traiter un email. La brique position est soit livrée en V1, soit explicitement reportée.
