- Projet Vite/React + Firebase (Spark) hébergé sur
https://solaire-frontend.web.app. - Auth Firebase (admin/client) avec Firestore rules propres (admin lecture/écriture, client lecture sur
files). - Seed admin
/dev/seedpermet de vider/recréer leads, clients, dossiers (installerId = INST123, référencesDOS-YYYY-NNNN). - Portail client :
/client/login,/client/dashboard,/client/dossiers/:id(lecture defiles, dossiers listés + détail cliquable). scripts/seed-demo.js: script Node pour réinitialiser (login admin + reseed).createFileSafeClientgère la réf + transaction.
npm install(si nécessaire) puisnpm run dev.- Aller sur
http://localhost:5173/dev/seed, se connecter avec les identifiants admin conservés en secret (voir variables d’environnement, aucun mot de passe n’est versionné). - Cliquer sur Vider les collections puis Seed de démo pour régénérer les données.
- Ouvrir
http://localhost:5173/client/login, se connecter en installateur avec les identifiants fournis en dehors du dépôt (ou créés via le seed). - Vérifier
/client/dashboard(totaux + tableau cliquable) et/client/dossiers/:id. - Regarder
/dev/seed: le bouton seed fonctionne à nouveau si besoin.
npm run build
firebase deploy --only hosting,firestore:rules --project solaire-frontend- Hosting final sur
https://solaire-frontend.web.app. - Règles Firestore disponibles dans
firestore.rules.
- Dossiers protégés côté Firestore via
allow read: if isSignedIn()(client peut lire sesinstallerId, admin tout). `` useCollectionattenduseAuthavant la lecture (évite erreursMissing permissions).scripts/seed-demo.jspeut être lancé sur n’importe quelle machine disposant des credentials admin.- Toujours exécuter
node scripts/seed-demo.jsaprès un nettoyage (/dev/seed > Vider les collections).
REACT_APP_API_URL(ex: http://localhost:3000)REACT_APP_FIREBASE_CONFIG(JSON stringify du config Firebase)VITE_API_WS_URL(optionnel, ex: http://localhost:3000 pour le websocket)
npm install
npm run buildLe bundle est produit dans dist/ (utilisé pour Pages/hosting).
- Voir DEPLOYMENT.md pour les étapes GH Pages.