Guía de Instalación
Esta guía te ayudará a instalar y configurar UnoSportClub en Firebase desde cero.
Instalación de Firebase CLI
Instala Firebase CLI globalmente:
npm install -g firebase-tools
Verifica la instalación:
firebase --version
Inicia sesión en Firebase:
firebase login
Configuración del Proyecto Firebase
Crear Proyecto en Firebase Console
-
Haz clic en "Agregar proyecto"
-
Ingresa el nombre del proyecto (ej:
unosportclub-dev) -
Sigue las instrucciones para completar la creación
Inicializar Firebase en el Proyecto Local
Clona o navega al directorio del proyecto:
cd unosportclub
firebase init
Durante la inicialización, selecciona:
-
Firebase Features: Hosting, Functions
-
Project: Selecciona el proyecto creado anteriormente
-
Functions:
-
Language: JavaScript
-
ESLint: Yes
-
Install dependencies: Yes
-
-
Hosting:
-
Public directory:
dist/unosportclub/browser -
Single-page app: Yes
-
Set up automatic builds: No (por ahora)
-
Configuración de Variables de Entorno
Variables de Entorno para Functions
Crea el archivo functions/.env:
cd functions
cp .env.example .env
Edita functions/.env y configura:
# Configuración de Base de Datos PostgreSQL
DATABASE_URL=postgresql://usuario:password@host:puerto/nombre_bd
# O usa variables individuales:
# DB_HOST=localhost
# DB_PORT=5432
# DB_NAME=unosportclub
# DB_USER=postgres
# DB_PASSWORD=tu_password
# DB_SSL=false
Variables de Entorno para Firebase Functions (Producción)
Para producción, configura las variables usando Firebase Functions Config o Secret Manager:
Opción 1: Firebase Functions Config (valores no sensibles)
firebase functions:config:set db.host="tu-host" db.port="5432" db.name="unosportclub"
Opción 2: Secret Manager (valores sensibles - RECOMENDADO)
# Crear secreto
firebase functions:secrets:set DATABASE_URL
# Se te pedirá ingresar el valor del secreto
# Ingresa: postgresql://usuario:password@host:puerto/nombre_bd
Luego, en functions/index.js, accede al secreto:
const { defineSecret } = require('firebase-functions/params');
const databaseUrl = defineSecret('DATABASE_URL');
Configuración de Base de Datos PostgreSQL
Crear Base de Datos
Si usas PostgreSQL local:
createdb unosportclub
Si usas un servicio en la nube (Render, Heroku, AWS RDS, etc.), sigue las instrucciones de tu proveedor para crear la base de datos.
Ejecutar Migraciones y Seeders
Las migraciones se ejecutan automáticamente durante npm install si las variables de entorno están configuradas.
Para ejecutarlas manualmente:
npm run db:migrate
Este comando: * Crea todas las tablas del modelo de datos * Carga los datos iniciales (tipos de cancha, tipos de cliente, tipos de reserva)
Verificar Instalación de Base de Datos
Puedes verificar que todo se haya instalado correctamente conectándote a PostgreSQL:
psql -h localhost -U postgres -d unosportclub -c "\dt"
Deberías ver las siguientes tablas:
-
user -
client_type -
court_type -
reservation_type -
operator -
client -
court -
reservation -
payment -
discount -
schema_migrations
Configuración de Firebase Functions
Estructura de Functions
El proyecto usa Express.js dentro de Firebase Functions. La estructura es:
functions/
├── index.js # Punto de entrada principal
├── routes/ # Rutas de la API
│ ├── bookings.js
│ ├── clients.js
│ ├── courts.js
│ ├── payments.js
│ └── sudo.js
├── models/ # Modelos de datos
├── db/ # Migraciones y seeders
│ ├── migrations/
│ └── seeders/
└── package.json
Configuración de Firebase Hosting
Build de la Aplicación Angular
Antes de desplegar, construye la aplicación:
npm run build
Esto generará los archivos estáticos en dist/unosportclub/browser/.
Configuración de Hosting Múltiple
El proyecto tiene dos sitios de hosting configurados:
-
prod: Aplicación principal (
dist/unosportclub/browser) -
control: Panel de control (
dist/sudo/browser)
Para configurar los targets:
firebase target:apply hosting prod unosportclub-prod
firebase target:apply hosting control unosportclub-control
Despliegue
Desplegar Functions
firebase deploy --only functions
O desplegar una función específica:
firebase deploy --only functions:api
firebase deploy --only functions:sudo
Verificación Post-Instalación
Verificar Functions
Después del despliegue, verifica que las funciones estén activas:
firebase functions:list
Verificar Hosting
Visita las URLs de tus sitios:
-
Producción:
https://tu-proyecto.web.app -
Control:
https://control.tu-proyecto.web.app(si está configurado)
Solución de Problemas
Error: Variables de Entorno No Configuradas
Si ves el mensaje:
⚠️ Variables de entorno de base de datos no configuradas
Verifica que:
* El archivo functions/.env existe
* Las variables están correctamente configuradas
* El archivo no tiene errores de sintaxis
* No hay espacios extra alrededor del signo =
* Las comillas están correctamente cerradas
Error: Conexión a Base de Datos Fallida
Verifica: * Que PostgreSQL esté corriendo * Que las credenciales sean correctas * Que el firewall permita conexiones desde Firebase Functions * Que uses SSL si es requerido (bases de datos en la nube) * Que el puerto esté abierto (por defecto 5432) * Que la base de datos exista
Para probar la conexión manualmente:
npm run db:test
Error: Migraciones No Se Ejecutan
Si las migraciones no se ejecutan automáticamente:
npm run db:migrate
Si hay errores en las migraciones:
-
Revisa los logs de error
-
Verifica que no haya migraciones duplicadas
-
Confirma que la base de datos esté vacía o en el estado correcto
-
Revisa que todas las dependencias de las migraciones estén creadas
Error: Build de Angular Falla
Asegúrate de:
* Tener todas las dependencias instaladas: npm install
* Tener Node.js 22 o superior
* Verificar errores de TypeScript: npm run build
* Limpiar caché: rm -rf node_modules .angular && npm install
* Verificar que no haya conflictos de versiones
Error: Firebase Functions No Se Despliegan
Si las Functions no se despliegan:
-
Verifica que estés autenticado:
firebase login -
Confirma que el proyecto esté seleccionado:
firebase use <project-id> -
Revisa los logs:
firebase functions:log -
Verifica que no haya errores de sintaxis en
functions/index.js -
Asegúrate de que todas las dependencias estén instaladas en
functions/
Error: Hosting No Se Despliega
Si el hosting no se despliega:
-
Verifica que los builds se completen correctamente
-
Confirma que los directorios de salida sean correctos en
firebase.json -
Revisa que los targets estén configurados:
firebase target:apply hosting <target> <site> -
Verifica permisos de Firebase Hosting en la consola
Error: Autenticación No Funciona
Si la autenticación no funciona:
-
Verifica que Firebase Authentication esté habilitado en la consola
-
Confirma que los métodos de autenticación estén activados
-
Revisa la configuración de Firebase en los archivos de entorno
-
Verifica que los dominios autorizados estén configurados
-
Revisa la consola del navegador para errores de JavaScript
Error: API Retorna 404
Si los endpoints de la API retornan 404:
-
Verifica que las Functions estén desplegadas
-
Confirma que las rutas estén correctamente configuradas en
functions/index.js -
Revisa las reglas de rewrite en
firebase.json -
Verifica que el endpoint esté correctamente montado
-
Revisa los logs de Functions para más detalles
Error: Base de Datos en la Nube No Conecta
Para bases de datos en la nube (Render, Heroku, AWS RDS, etc.):
-
Verifica que la IP de Firebase Functions esté en la whitelist
-
Confirma que SSL esté habilitado y configurado
-
Revisa que la URL de conexión incluya parámetros SSL si es necesario
-
Verifica que el usuario de la base de datos tenga los permisos correctos
-
Confirma que la base de datos acepte conexiones externas
Comandos Útiles
Verificación Post-Instalación
Checklist de Verificación
Después de la instalación, verifica que todo funcione correctamente:
[ ] Base de Datos: [ ] Las migraciones se ejecutaron sin errores [ ] Las tablas están creadas correctamente [ ] Los seeders cargaron datos iniciales [ ] La conexión funciona desde Functions
[ ] Firebase Functions: [ ] Las Functions están desplegadas [ ] Los endpoints responden correctamente [ ] La autenticación funciona [ ] Los logs no muestran errores críticos
[ ] Firebase Hosting: [ ] Los sitios están desplegados [ ] Las aplicaciones cargan correctamente [ ] Las rutas funcionan (SPA) [ ] Los assets se cargan correctamente
[ ] Autenticación: [ ] Los usuarios pueden registrarse [ ] Los usuarios pueden iniciar sesión [ ] Los roles se asignan correctamente [ ] Los custom claims funcionan
[ ] Aplicaciones: [ ] La aplicación principal carga [ ] El panel de operador funciona [ ] El panel de entrenador funciona [ ] El panel de control funciona
Pruebas Básicas
Realiza estas pruebas básicas:
-
Crear un usuario de prueba:
-
Regístrate en la aplicación principal
-
Verifica que recibas el email de confirmación
-
Inicia sesión con las credenciales
-
-
Probar la API:
-
Haz una petición a
/api/api-docs.json -
Verifica que retorne la documentación Swagger
-
Prueba un endpoint autenticado
-
-
Verificar base de datos:
-
Conecta a PostgreSQL
-
Verifica que las tablas existan
-
Confirma que haya datos en las tablas de seeders
-
Próximos Pasos
Una vez completada la instalación y verificación:
-
Configuración inicial:
-
Crea el primer usuario super usuario
-
Configura la información básica del club
-
Define las primeras canchas y tarifas
-
-
Personalización:
-
Configura Firebase Authentication según tus necesidades
-
Personaliza los dominios en Firebase Hosting
-
Ajusta las configuraciones del sistema
-
-
Documentación:
-
Revisa la Documentación del Desarrollador
-
Consulta la Referencia de API
-
Lee los manuales de usuario según tu rol
-
-
Producción:
-
Configura monitoreo y alertas
-
Establece políticas de backup
-
Configura dominios personalizados
-
Revisa la seguridad y permisos
-