Última Actualización: 09 de Mayo de 2025
Esta guía describe los pasos necesarios para instalar, configurar y ejecutar el proyecto LoyalPyME en un entorno de desarrollo local. Es crucial seguir los pasos en orden para asegurar una configuración correcta.
Antes de empezar, asegúrate de tener instalado lo siguiente en tu sistema:
- Node.js: Se recomienda una versión LTS reciente (v18 o v20+ al momento de escribir esto). Puedes descargarlo desde nodejs.org. Node.js incluye npm (Node Package Manager).
- Yarn (Opcional, pero usado en los ejemplos de scripts): Gestor de paquetes para Node.js (v1.x recomendada si se usa). Si tienes Node.js/npm, puedes instalarlo con
npm install --global yarn. Si prefieres usarnpmpara todos los comandos, puedes adaptar los ejemplos (yarn install->npm install,yarn dev->npm run dev). - PostgreSQL: Sistema de base de datos relacional. Necesitas tener un servidor PostgreSQL instalado y corriendo localmente o accesible en tu red.
- Puedes descargarlo desde postgresql.org/download.
- Durante la instalación, se te pedirá configurar una contraseña para el usuario
postgres(o el usuario administrador por defecto). Anótala. - Necesitarás crear una base de datos para el proyecto. Usando una herramienta como
psql(cliente de línea de comandos de PostgreSQL) o pgAdmin (GUI), puedes crearla con:CREATE DATABASE loyalpymedb;(o el nombre que prefieras, pero deberás ajustarlo en el.env).
- Git: Sistema de control de versiones para clonar el repositorio. git-scm.com/downloads.
npx: Es una herramienta que viene connpm(desde la versión 5.2+). Permite ejecutar paquetes de Node.js sin necesidad de instalarlos globalmente. La usaremos para comandos de Prisma yts-node.- (Opcional) NVM (Node Version Manager): Útil para gestionar múltiples versiones de Node.js si trabajas en varios proyectos (Linux/Mac, Windows).
- (Opcional) Editor de Código: Se recomienda VS Code con extensiones para Prisma, TypeScript, ESLint.
La configuración del backend implica clonar el proyecto, instalar dependencias, configurar el entorno y preparar la base de datos.
-
Clonar Repositorio: Si aún no lo tienes, clona el repositorio del proyecto desde su URL y navega a la carpeta raíz del proyecto.
git clone <URL_DEL_REPOSITORIO_GIT> LoyalPyME cd LoyalPyME
-
Navegar a la Carpeta del Backend: Todos los comandos siguientes para el backend se ejecutarán desde esta carpeta.
cd backend -
Instalar Dependencias del Backend: Esto instalará todos los paquetes listados en
package.json(Express, Prisma, etc.).yarn install # Alternativamente, si usas npm: # npm install
-
Configurar Variables de Entorno (
.env): Las variables de entorno son cruciales para configurar la conexión a la base de datos, secretos JWT, y credenciales de servicios externos como Cloudinary.- Copia el archivo de ejemplo
.env.examplea un nuevo archivo llamado.env:cp .env.example .env # En Windows, puedes usar: copy .env.example .env - Abre el archivo
.envrecién creado con un editor de texto. - Edita las siguientes variables obligatorias:
DATABASE_URL: La cadena de conexión a tu base de datos PostgreSQL. El formato es:postgresql://<DB_USER>:<DB_PASSWORD>@<DB_HOST>:<DB_PORT>/<DB_NAME>?schema=public.- Ejemplo para una instalación local común de PostgreSQL (reemplaza
<DB_PASSWORD>con la contraseña que configuraste para tu usuariopostgres, y<DB_NAME>con el nombre de la base de datos que creaste, ej:loyalpymedb):postgresql://postgres:tu_contraseña_postgres@localhost:5432/loyalpymedb?schema=public - Asegúrate que el usuario de la BD tiene permisos para crear tablas en el schema
publicde esa base de datos.
- Ejemplo para una instalación local común de PostgreSQL (reemplaza
JWT_SECRET: Una cadena larga, secreta y aleatoria utilizada para firmar los tokens de autenticación (JWT). ¡No uses el valor de ejemplo en un entorno de producción! Puedes generar una con un generador de contraseñas online.CLOUDINARY_CLOUD_NAME: El "Cloud Name" de tu cuenta de Cloudinary (para almacenamiento de imágenes).CLOUDINARY_API_KEY: La "API Key" de tu cuenta de Cloudinary.CLOUDINARY_API_SECRET: El "API Secret" de tu cuenta de Cloudinary.
- (Opcional) Variables para Tests de Integración: Si planeas ejecutar los tests de integración del backend, podrías necesitar definir:
TEST_ADMIN_EMAIL: Email para el admin en los tests.TEST_ADMIN_PASSWORD: Contraseña para el admin en los tests. (Nota: Actualmente, los tests podrían tener credenciales hardcodeadas. Idealmente, deberían usar estas variables de entorno.)
- (Opcional) Variables para Creación de Super Admin (si se leen desde .env en el script):
SUPERADMIN_EMAILSUPERADMIN_PASSWORD
- Guarda los cambios en el archivo
.env.
- Copia el archivo de ejemplo
-
Preparar la Base de Datos y Cargar Datos Iniciales: Estos pasos inicializarán tu base de datos con el esquema definido y datos de prueba.
- Paso 5.1: Resetear y Aplicar Migraciones:
Este comando es fundamental para el desarrollo. Eliminará todos los datos de tu base de datos
loyalpymedb(si existe y tiene datos), aplicará todas las migraciones desde el principio y creará las tablas según tu archivoprisma/schema.prisma. Es la forma más limpia de asegurar que tu BD está sincronizada con el schema durante el desarrollo.Prisma te pedirá confirmación. Escribenpx prisma migrate reset
yoyesy presiona Enter. - Paso 5.2: Generar Cliente Prisma:
Después de cualquier cambio en el schema (como el que ocurre con
migrate resetomigrate dev), debes regenerar el Cliente Prisma. Esto actualiza los tipos de TypeScript ennode_modules/.prisma/clientpara que coincidan con tu schema.npx prisma generate
- Paso 5.3: Poblar con Datos de Demostración (Seed):
Este comando ejecuta el script
prisma/seed.ts. Este script está diseñado para crear:- Un negocio de demostración llamado "Restaurante Demo LoyalPyME".
- Un usuario administrador (
BUSINESS_ADMIN) para ese negocio con credenciales:admin@demo.com/password. - Un usuario cliente (
CUSTOMER_FINAL) para ese negocio con credenciales:cliente@demo.com/password. - Algunos Tiers y Recompensas de ejemplo para el negocio demo.
- Los módulos LoyalPyME Core y LoyalPyME Camarero se activan por defecto para este negocio demo. Ejecuta:
Deberías ver en la consola los logs del script indicando la creación de estos datos.npx prisma db seed
- Paso 5.4: Crear Usuario Super Administrador Global:
La plataforma tiene un rol de Super Administrador para gestionar todos los negocios. Este script crea el primer (y posiblemente único) Super Admin.
Por defecto (según el script
scripts/create-superadmin.ts), las credenciales son:superadmin@loyalpyme.com/superadminpassword. ¡Es crucial que cambies la contraseña por defecto en el scriptcreate-superadmin.tssi vas a usar esto en un entorno más allá de tu máquina local! Ejecuta:Guarda estas credenciales del Super Admin en un lugar seguro.npx ts-node ./scripts/create-superadmin.ts
- Paso 5.1: Resetear y Aplicar Migraciones:
Este comando es fundamental para el desarrollo. Eliminará todos los datos de tu base de datos
-
Navegar a la Carpeta del Frontend: Desde la raíz del proyecto (
LoyalPyME/):cd frontend(O
cd ../frontendsi estás en la carpetabackend/). -
Instalar Dependencias del Frontend: Esto instalará React, Mantine, y otras librerías necesarias.
yarn install # Alternativamente, si usas npm: # npm install
(No se requiere archivo
.enven la carpetafrontend/por defecto, ya que la URL de la API se configura envite.config.tspara el proxy o se usa directamente enaxiosInstancesi es una URL completa).
¡Asegúrate de que tu servidor PostgreSQL esté corriendo localmente!
Se recomienda usar dos terminales separadas para el backend para una mejor experiencia de desarrollo.
-
Terminal 1 (Backend - Compilador TypeScript en modo "watch"):
- Navega a la carpeta
backend/. - Ejecuta el script
dev:buildde tupackage.json(o el comando directo):yarn dev:build # o npx tsc --watch - Esto vigilará cambios en tus archivos
.tsdentro desrc/y los compilará automáticamente a JavaScript en la carpetadist/. Déjalo corriendo.
- Navega a la carpeta
-
Terminal 2 (Backend - Servidor Node.js con Nodemon):
- Navega a la carpeta
backend/. - Ejecuta el script
dev:runde tupackage.json(o el comando directo):yarn dev:run # o npx nodemon dist/index.js - Esto iniciará el servidor Express (
http://localhost:3000por defecto) usando los archivos compilados endist/. Nodemon reiniciará el servidor automáticamente si detecta cambios endist/(causados portsc --watch). Déjalo corriendo.
- Navega a la carpeta
-
Terminal 3 (Frontend - Servidor de Desarrollo Vite):
- Navega a la carpeta
frontend/. - Ejecuta el script
dev:yarn dev # Si necesitas que el frontend sea accesible desde otros dispositivos en tu red local (ej: móvil): # yarn dev --host
- Esto iniciará el servidor de desarrollo de Vite. Por defecto (con
mkcert), intentará usarhttps://localhost:5173. Si no usas HTTPS, seráhttp://localhost:5173. La terminal te mostrará la URL exacta. Déjalo corriendo.
- Navega a la carpeta
Una vez que todos los servidores estén corriendo:
- Aplicación Principal (Login, Registro Cliente, Dashboard Cliente, Panel Admin Negocio):
- Abre tu navegador y ve a
https://localhost:5173(o la URL que te haya dado Vite). - Credenciales del Negocio Demo (creadas por el seed):
- Email:
admin@demo.com - Contraseña:
password
- Email:
- Credenciales del Cliente Demo (creadas por el seed):
- Email:
cliente@demo.com - Contraseña:
password
- Email:
- Abre tu navegador y ve a
- Panel Super Administrador:
- Navega a
https://localhost:5173/superadmin - Credenciales Super Admin (creadas por el script
create-superadmin.ts):- Email:
superadmin@loyalpyme.com(o el que configuraste) - Contraseña:
superadminpassword(¡o la que configuraste!)
- Email:
- Navega a
- API Backend Directa:
- La API está disponible en
http://localhost:3000.
- La API está disponible en
- Documentación API (Swagger UI):
- Accede a
http://localhost:3000/api-docsen tu navegador para ver y probar los endpoints de la API.
- Accede a
Acceso desde Móvil (Red Local):
Si ejecutaste el frontend con yarn dev --host, Vite te mostrará una URL de "Network" (ej: https://192.168.1.XX:5173).
- Asegúrate que tu PC y tu dispositivo móvil están en la misma red WiFi.
- Abre el navegador en tu móvil y escribe esa URL de red.
- Si usas HTTPS (recomendado), es probable que el móvil muestre una advertencia de seguridad por el certificado autofirmado de
mkcert. Deberás aceptarla para continuar (generalmente hay una opción de "Avanzado" o "Continuar de todas formas"). - Verifica que tu firewall en la PC permite conexiones entrantes en el puerto
5173(para Vite) y3000(para el backend API) en redes privadas.
Para crear las versiones optimizadas para despliegue:
- Backend:
Desde la carpeta
backend/:Esto generará la carpetayarn build # o npm run builddist/con el código JavaScript transpilado. - Frontend:
Desde la carpeta
frontend/:Esto generará la carpetayarn build # o npm run builddist/(dentro defrontend/) con los assets estáticos optimizados.
El despliegue a un entorno de producción es un tema más amplio y depende del proveedor de hosting/plataforma elegido. Conceptualmente, implicaría:
- Construir el backend y frontend (ver sección anterior).
- Configurar un servidor de producción (VPS, PaaS como Render, Heroku, etc.).
- Configurar una base de datos PostgreSQL de producción.
- Establecer todas las variables de entorno (
.env) necesarias en el servidor de producción (DB_URL, JWT_SECRET, credenciales Cloudinary, etc.). - Subir los archivos de
backend/dist/,backend/node_modules/(solo producción), yfrontend/dist/. - Ejecutar las migraciones de Prisma en la base de datos de producción:
npx prisma migrate deploy. - Iniciar el servidor Node.js del backend (ej:
node dist/index.js, idealmente usando un gestor de procesos como PM2). - Configurar un servidor web (como Nginx o Apache) para servir los archivos estáticos del frontend y actuar como proxy inverso para las peticiones
/apihacia el backend Node.js. - Asegurar HTTPS con certificados SSL válidos.
(El plan de desarrollo menciona una "Estrategia Deployment & CI/CD (Avanzada)" como tarea futura).
Ejecuta estos comandos desde la carpeta correspondiente (backend/ o frontend/ según aplique).
-
Base de Datos (Backend - Prisma):
npx prisma studio: Abre una interfaz gráfica en el navegador para ver y editar los datos de tu base de datos. ¡Muy útil para desarrollo!npx prisma migrate dev: Aplica migraciones pendientes, crea la BD si no existe (en desarrollo). Te pedirá un nombre para la nueva migración si hay cambios en el schema.npx prisma migrate reset: ¡CUIDADO! Borra la base de datos y vuelve a aplicar todas las migraciones. Útil para empezar de cero si las migraciones dan problemas irrecuperables en desarrollo.npx prisma generate: Regenera el Cliente Prisma (@prisma/client) después de cambios enschema.prisma. Esencial después de cualquier migración.npx prisma format: Formatea automáticamente tu archivoschema.prismapara mantenerlo ordenado.npx prisma validate: Comprueba si tuschema.prismaes válido sintácticamente.npx prisma db seed: Ejecuta el scriptprisma/seed.tspara poblar la BD con datos iniciales/demo.
-
Testing (Backend - Vitest):
yarn test(onpm run test): Ejecuta todos los tests (*.test.ts) una vez.yarn test:watch(onpm run test:watch): Ejecuta los tests y se queda vigilando cambios para volver a ejecutarlos.yarn test --coverage(onpm run test -- --coverage): Ejecuta los tests y genera un informe de cobertura de código.yarn test <nombre_archivo_o_patron>: Ejecuta solo tests específicos.
-
Testing (Frontend - Vitest):
yarn test(onpm run test): Ejecuta todos los tests una vez.yarn test:watch(onpm run test:watch): Ejecuta en modo vigilancia.yarn test:ui(onpm run test:ui): Abre una interfaz gráfica en el navegador para explorar los resultados de los tests de Vitest.yarn test --coverage(onpm run test -- --coverage): Ejecuta con informe de cobertura.
-
Scripts Personalizados (Backend - ejecutados con
ts-node):npx ts-node ./scripts/create-superadmin.ts: Crea el usuario Super Administrador global.npx ts-node ./scripts/hash-customer-password.ts: (Ejemplo) Script para actualizar hash de contraseña de un usuario específico. Adaptar según necesidad. (Para ejecutar scriptsts-node, asegúrate de estar en la carpetabackend/y quets-nodeesté endevDependencies).
-
Otros Comandos Frontend:
yarn lint(onpm run lint): Ejecuta ESLint para comprobar la calidad y estilo del código.yarn preview(onpm run preview): Construye la app para producción y la sirve localmente para previsualizarla.
-
Herramientas Externas Recomendadas:
- Clientes Gráficos de PostgreSQL: pgAdmin (oficial), DBeaver (universal), DataGrip (de JetBrains, de pago). Muy útiles para inspeccionar el schema, los datos, y ejecutar SQL directamente.
- psql: Cliente de línea de comandos para PostgreSQL. Potente para usuarios avanzados.
- Postman / Insomnia / Bruno: Herramientas para probar la API backend directamente enviando peticiones HTTP (GET, POST, etc.) y viendo las respuestas. Esencial para depurar APIs.
- Navegador (Herramientas de Desarrollador - F12): Indispensable para depurar el frontend:
- Consola: Ver logs de JavaScript, errores.
- Red (Network): Inspeccionar peticiones API, sus cabeceras, cuerpos y respuestas.
- Elementos (Elements): Inspeccionar y modificar el DOM y CSS.
- Aplicación (Application): Ver y modificar
localStorage,sessionStorage, cookies.
- Navegador (Depuración Remota Móvil): Si necesitas depurar la vista móvil, los navegadores de escritorio ofrecen herramientas para conectar con el navegador de un dispositivo móvil (o emulador) y ver su consola/inspector. (Ver sección 5 y
TROUBLESHOOTING_GUIDE.md).
Si encuentras problemas durante la instalación o ejecución, consulta primero la TROUBLESHOOTING_GUIDE.md para ver soluciones a errores comunes ya documentados.
(Fin de la Guía de Setup)