Firebase Auth
Comptes, cloud save Firestore et synchronisation.
Firebase Auth & cloud save
Comptes joueur pour cloud save (Firestore) et futur FCM. Sans variables Firebase, le jeu reste 100 % local (Dexie).
Console Firebase
- Firebase Console → projet
- Authentication → Google + Email link (pas mot de passe)
- Authorized domains :
localhost, prod, previews - Firestore Database → créer (mode prod) → déployer
firebase/firestore.rules - Project settings → Web app → config SDK →
.env
Variables .env
Voir .env.example (NUXT_PUBLIC_FIREBASE_*).
UX implémentée
| Entrée | Comportement |
|---|---|
Landing → /play | Aucune auth requise |
| Réglages (HUD) | « Lier son compte ou se connecter » |
| Dialogue | Google · mail (lien magique) · Annuler |
| Pas de save cloud | Continue la partie locale + upload auto (retry si échec) |
| Save cloud + partie neuve | Reprise cloud auto |
| Save cloud + partie locale | Dialogue scores : reprendre compte / garder local (confirm écrasement) / plus tard |
| Déconnexion | Dexie conservé sur l’appareil |
| Sync continue | Upload auto (3 s après changement, à la fermeture d’onglet, retry 15 s si réseau) |
| Multi-appareil | Listener Firestore onSnapshot + poll 60 s : reprise auto si pas de changement local, sinon dialogue conflit |
Architecture
HudSettingsMenu → AuthAccountDialog
→ CloudSaveConflictDialog
useAccountSync → reconcile après auth + upload auto + listener Firestore (`onSnapshot`)
app/lib/firebase/cloudSave.ts → Firestore saves/{uid}
@game/* → inchangé (normalizeGameState à l’import/export)
Dev console
window.__gearuna.auth
window.__gearuna.game
Checklist prod
- Domaines autorisés
- Règles Firestore déployées
- Email link activé
- Test PWA standalone (popup Google)
- Mentions / confidentialité (données compte)