Guía de Configuración de Firebase
Esta guía te llevará paso a paso para configurar Firebase y conectarlo con tu sistema de quiz modal.
Paso 1: Crear Proyecto en Firebase
- Ve a Firebase Console
- Haz clic en “Agregar proyecto” o “Add project”
- Ingresa un nombre para tu proyecto (ejemplo: “mi-sitio-quizzes”)
- (Opcional) Puedes desactivar Google Analytics si no lo necesitas
- Haz clic en “Crear proyecto”
Paso 2: Registrar tu Aplicación Web
- En la página principal de tu proyecto, haz clic en el ícono web
</> - Ingresa un nombre para tu app (ejemplo: “Quiz Modal”)
- NO marques “Firebase Hosting” (ya tienes GitHub Pages)
- Haz clic en “Registrar app”
Paso 3: Obtener las Credenciales
Verás un código similar a este:
const firebaseConfig = {
apiKey: "AIzaSyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
authDomain: "tu-proyecto.firebaseapp.com",
projectId: "tu-proyecto",
storageBucket: "tu-proyecto.appspot.com",
messagingSenderId: "123456789012",
appId: "1:123456789012:web:abcdef123456",
};
IMPORTANTE: Copia estos valores, los necesitarás en el siguiente paso.
Paso 4: Configurar las Credenciales en tu Sitio
- Abre el archivo
_includes/js/firebase-config.js - Reemplaza los valores de
firebaseConfigcon los tuyos:
const firebaseConfig = {
apiKey: "TU_API_KEY_AQUI",
authDomain: "TU_PROJECT_ID.firebaseapp.com",
projectId: "TU_PROJECT_ID",
storageBucket: "TU_PROJECT_ID.appspot.com",
messagingSenderId: "TU_MESSAGING_SENDER_ID",
appId: "TU_APP_ID",
};
Paso 5: Habilitar Firestore Database
- En el menú lateral de Firebase Console, haz clic en “Firestore Database”
- Haz clic en “Crear base de datos” o “Create database”
- Selecciona “Comenzar en modo de prueba” (Start in test mode)
- Elige una ubicación cercana a tus usuarios (ejemplo:
us-east1para Colombia) - Haz clic en “Habilitar”
Paso 6: Configurar Reglas de Seguridad
Por defecto, las reglas de prueba permiten lectura/escritura por 30 días. Necesitas configurar reglas más seguras:
- En Firestore Database, ve a la pestaña “Reglas” (Rules)
- Reemplaza las reglas con estas:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Permitir que cualquiera escriba en quiz-submissions
match /quiz-submissions/{document} {
allow create: if true;
allow read, update, delete: if request.auth != null;
}
}
}
- Haz clic en “Publicar” (Publish)
Explicación de las reglas:
allow create: if true- Cualquiera puede crear nuevas submissions (necesario para el quiz público)allow read, update, delete: if request.auth != null- Solo usuarios autenticados pueden leer, actualizar o eliminar (para el dashboard de admin)
Paso 7: Habilitar Authentication
Para proteger el dashboard de administración:
- En el menú lateral, haz clic en “Authentication”
- Haz clic en “Comenzar” o “Get started”
- En la pestaña “Sign-in method”, habilita “Correo electrónico/contraseña”
- Haz clic en “Guardar”
Paso 8: Crear Usuario Administrador
- En Authentication, ve a la pestaña “Users”
- Haz clic en “Agregar usuario” (Add user)
- Ingresa tu email y contraseña
- Haz clic en “Agregar usuario”
IMPORTANTE: Guarda estas credenciales, las necesitarás para acceder al dashboard.
Paso 9: Agregar Scripts de Firebase a tu Sitio
En tu archivo _includes/head.html, agrega estos scripts ANTES de tus scripts personalizados:
<!-- Firebase SDK -->
<script src="https://www.gstatic.com/firebasejs/9.22.0/firebase-app-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.22.0/firebase-auth-compat.js"></script>
<!-- Quiz Modal Scripts -->
<script src="/js/firebase-config.js"></script>
<script src="/js/quiz-modal.js"></script>
Paso 10: Crear Índices (Opcional pero Recomendado)
Para queries más eficientes en el dashboard:
- En Firestore Database, ve a la pestaña “Índices” (Indexes)
- Haz clic en “Crear índice” (Create index)
- Configura:
- Colección:
quiz-submissions - Campos a indexar:
quizId- AscendentecreatedAt- Descendente
- Estado de consulta: Habilitado
- Colección:
- Haz clic en “Crear”
Repite para otro índice:
- Colección:
quiz-submissions - Campos:
status- AscendentecreatedAt- Descendente
Paso 11: Verificar la Configuración
- Abre tu sitio web en el navegador
- Abre la consola del navegador (F12)
- Deberías ver: “Firebase initialized successfully”
- Completa un quiz de prueba
- Ve a Firebase Console > Firestore Database
- Deberías ver una nueva entrada en la colección
quiz-submissions
Configuración para GitHub Pages
Firebase funciona perfectamente con sitios estáticos en GitHub Pages. No necesitas configurar nada adicional en GitHub Pages.
Consideraciones Importantes:
-
Seguridad de API Keys: Las API keys de Firebase son seguras para uso público en el frontend. Firebase usa reglas de seguridad en el backend para proteger los datos.
-
Límites del Plan Gratuito (Spark):
- 50,000 lecturas/día
- 20,000 escrituras/día
- 20,000 eliminaciones/día
- 1 GB de almacenamiento
- 10 GB de transferencia/mes
Esto es más que suficiente para la mayoría de sitios web pequeños y medianos.
-
Monitoreo de Uso:
- Ve a Firebase Console > Usage and billing
- Configura alertas para recibir notificaciones si te acercas a los límites
Solución de Problemas
Error: “Firebase not initialized”
Solución: Verifica que los scripts de Firebase estén cargando antes que firebase-config.js y quiz-modal.js.
Error: “Permission denied”
Solución: Revisa las reglas de seguridad en Firestore. Asegúrate de que permitan create sin autenticación.
Los datos no aparecen en Firestore
Solución:
- Abre la consola del navegador (F12)
- Busca errores en rojo
- Verifica que las credenciales en
firebase-config.jssean correctas - Asegúrate de que Firestore esté habilitado
Error de CORS
Solución: Firebase maneja CORS automáticamente. Si ves este error, verifica que estés usando las URLs correctas de Firebase.
Próximos Pasos
Una vez configurado Firebase:
- ✅ Prueba el quiz en tu sitio
- ✅ Verifica que los datos se guarden en Firestore
- ✅ Configura el dashboard de administración (próxima guía)
- ✅ Personaliza los mensajes y preguntas del quiz
Recursos Adicionales
¿Necesitas ayuda? Revisa la sección de solución de problemas o contacta al desarrollador.