← Admin

Conectar Firebase

El directorio y el admin pueden compartir el mismo catálogo en la nube. Sin Firebase, todo sigue en el navegador (localStorage).

1. Crear el proyecto

  1. Entra a console.firebase.google.com.
  2. Añadir proyecto → nombre (ej. zonqr-guasave).
  3. Compilación → Firestore Database → Crear base (modo producción).
  4. Compilación → Storage → Comenzar.
  5. Configuración del proyecto (engranaje) → Tus apps → Web → registra la app y copia las claves.

2. Claves en Netlify (no en el código)

En Netlify → Site configuration → Environment variables crea: FIREBASE_API_KEY, FIREBASE_AUTH_DOMAIN, FIREBASE_PROJECT_ID, FIREBASE_STORAGE_BUCKET, FIREBASE_MESSAGING_SENDER_ID, FIREBASE_APP_ID (ver .env.example). El build genera js/firebase-config.js. Sin variables, Firebase queda apagado.

3. Admin y reglas

  1. Authentication → Sign-in method → activa Correo/contraseña. En Users → Add user crea tu cuenta y copia su UID.
  2. Firestore → crea la colección admins con un documento cuyo ID sea ese UID (puede ir vacío).
  3. Despliega reglas: firebase deploy --only firestore:rules,storage (o pega firestore.rules y storage.rules en la consola).

Catálogo: lectura pública, escritura solo admin. Escaneos de QR: cualquiera puede registrar uno, solo admin los lee.

4. Publicar el catálogo

  1. Abre admin.html y entra con tu correo y contraseña.
  2. Pulsa Publicar en Firebase.
  3. En otro teléfono o PC, abre el directorio: carga el mismo listado.
  4. Traer desde Firebase sustituye el catálogo local por el de la nube.
Fotos que pegas como archivo se suben a Storage y en Firestore queda la URL. Fotos que ya son enlace (Unsplash) se dejan igual.

Estructura

zonqr / {catalogId}                 → zona + categorías
zonqr / {catalogId} / businesses / {id}
zonqr / {catalogId} / scans / {auto}   → escaneos de QR (solo admin lee)
admins / {uid}                      → quién es admin
Storage: zonqr/{catalogId}/photos/…

Netlify + Firebase

Publica el sitio en Netlify como siempre. Las claves web de Firebase van en variables de entorno de Netlify (no son secretas como una service account; la seguridad está en las reglas. Restringe el dominio de la API key en Google Cloud si puedes).