# RenoValid — Synchronisation multi-utilisateurs

## Objectif

Centraliser dans le back office les données issues de plusieurs utilisateurs de `mobile-lite`.

Chaque utilisateur doit avoir son propre compte, ses propres projets et ses propres synchronisations.

## Backend ajouté

### Authentification

Routes créées :

- `POST /auth/register`
- `POST /auth/login`
- `GET /auth/me`
- `POST /auth/password/forgot`
- `POST /auth/password/reset`

Tables ajoutées :

- `UserAccount`
- `ApiSession`
- `PasswordResetToken`

### Réinitialisation mot de passe

Le flux prévu est :

1. L’utilisateur demande une réinitialisation via son email.
2. Le serveur génère un token temporaire.
3. Le serveur envoie un email avec un lien de réinitialisation.
4. L’utilisateur choisit un nouveau mot de passe.

Si SMTP n’est pas encore configuré, les emails sont écrits dans :

`email-outbox/`

Variables à prévoir plus tard :

- `SMTP_HOST`
- `SMTP_PORT`
- `SMTP_USER`
- `SMTP_PASSWORD`
- `SMTP_FROM`
- `PASSWORD_RESET_BASE_URL`

### Synchronisation projets

Route créée :

- `POST /sync/projects`

Elle exige un token utilisateur `Bearer`.

Chaque projet synchronisé est rattaché à :

- `user_id`
- `device_id`
- `public_id`

## Mobile-lite ajouté

Fichiers créés :

- `mobile-lite/src/services/backoffice-api.js`
- `mobile-lite/src/services/project-sync.js`

Fichier modifié :

- `mobile-lite/src/storage/projects.js`

Après chaque sauvegarde locale de projet, `mobile-lite` tente une synchronisation vers le back office.

Si l’utilisateur n’est pas connecté ou si l’API est indisponible, la sauvegarde locale continue à fonctionner.

## Point important

Cette brique pose la structure de synchronisation, mais il reste à créer les écrans mobile :

- inscription
- connexion
- mot de passe oublié
- état de synchronisation

Il reste aussi à configurer l’URL réelle de l’API dans `mobile-lite/src/services/backoffice-api.js`.
