Esta guía cubre la instalación completa del sistema desde cero: clonado del repositorio, configuración de variables de entorno para el backend y el frontend, ejecución de migraciones de base de datos y arranque de ambos servidores. Al finalizar tendrás el backend corriendo enDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/JuanM84/gestor-visitas/llms.txt
Use this file to discover all available pages before exploring further.
http://localhost:3000 y el frontend en http://localhost:5173.
Requisitos previos
Antes de comenzar, asegúrate de tener instalado en tu máquina:| Herramienta | Versión mínima | Notas |
|---|---|---|
| Node.js | >= 20.0.0 | Requerido explícitamente por el engines field del package.json del frontend |
| npm | >= 10 | Incluido con Node.js 20+ |
| PostgreSQL | >= 14 | Necesitas acceso a un servidor PostgreSQL con permisos para crear bases de datos |
Instalación paso a paso
Clonar el repositorio
Clona el repositorio en tu máquina local y accede al directorio raíz del proyecto:La estructura raíz del proyecto contiene dos carpetas principales:
Configurar la base de datos PostgreSQL
Creá una base de datos vacía en tu servidor PostgreSQL. Podés hacerlo desde Luego ejecutá el archivo de estructura de base de datos incluido en el repositorio para crear todas las tablas (
psql o desde cualquier cliente gráfico (pgAdmin, DBeaver, etc.):USUARIO, GESTOR, INSTITUCION, GRUPO, VISITA, DIAINHABIL, CONFIGURACION, LOGAUDITORIA) y sus relaciones:La tabla
CONFIGURACION se pobla con los valores por defecto durante la migración: capacidad_maxima = 300, capacidad_por_turno = 80 y session_timeout_minutes = 30. Podés modificar estos valores desde la UI de Configuraciones una vez que el sistema esté en funcionamiento.Configurar las variables de entorno del backend
Dentro de la carpeta
backend/, creá el archivo .env copiando el ejemplo a continuación y completando los valores con tus credenciales:Instalar dependencias del backend
Desde la carpeta Las dependencias de producción principales que se instalan son:
backend/, instalá las dependencias de Node.js:| Paquete | Versión | Propósito |
|---|---|---|
express | ^5.2.1 | Framework HTTP |
pg | ^8.20.0 | Driver PostgreSQL (sin ORM) |
jsonwebtoken | ^9.0.3 | Emisión y verificación de JWT |
bcryptjs | ^3.0.3 | Hash de contraseñas |
puppeteer-core | ^25.1.0 | Generación de PDFs headless |
@sparticuz/chromium | ^149.0.0 | Binario Chromium para Puppeteer |
cors | ^2.8.6 | Middleware CORS |
dotenv | ^17.4.2 | Carga de variables de entorno |
Configurar las variables de entorno del frontend
Dentro de la carpeta Esta variable es consumida por el cliente HTTP del frontend mediante
frontend/, creá el archivo .env con la URL base de la API del backend:import.meta.env.VITE_API_URL para construir las URLs de todas las peticiones a la API.Instalar dependencias del frontend
Desde la carpeta Las dependencias principales del frontend son:
frontend/, instalá las dependencias del proyecto React:| Paquete | Versión | Propósito |
|---|---|---|
react | ^19.2.5 | Librería de UI |
react-dom | ^19.2.5 | Renderer DOM de React |
react-router-dom | ^7.14.2 | Enrutamiento SPA |
tailwindcss | ^3.4.19 | Utilidades de estilo CSS |
vite | ^8.0.10 | Bundler y servidor de desarrollo |
xlsx | ^0.18.5 | Exportación a Excel |
Iniciar los servidores en modo desarrollo
Necesitás dos terminales abiertas (o un gestor de procesos como El backend usa
tmux), una para el backend y otra para el frontend:ts-node-dev con --respawn --transpile-only, lo que reinicia el servidor automáticamente ante cualquier cambio en los archivos .ts. El frontend usa el servidor HMR de Vite para recarga en caliente.Verificación del entorno
Una vez que ambos servidores estén corriendo, podés confirmar que el backend responde correctamente consultando el endpoint de salud:http://localhost:5173 en tu navegador para acceder a la interfaz React.
Referencia de variables de entorno
Backend (backend/.env)
| Variable | Requerida | Valor por defecto | Descripción |
|---|---|---|---|
PORT | No | 3000 | Puerto TCP en el que escucha Express |
DATABASE_URL | Sí* | — | URI completa de conexión a PostgreSQL (tiene prioridad sobre las variables DB_*) |
DB_HOST | Sí* | localhost | Host del servidor PostgreSQL |
DB_PORT | No | 5432 | Puerto PostgreSQL |
DB_NAME | Sí* | tunel_subfluvial | Nombre de la base de datos |
DB_USER | Sí* | postgres | Usuario de PostgreSQL |
DB_PASSWORD | Sí* | — | Contraseña del usuario PostgreSQL |
JWT_SECRET | Sí | — | Secreto para firmar tokens JWT (mínimo 32 chars) |
FRONTEND_URL | No | http://localhost:5173 | Origen permitido en la política CORS |
Para la conexión a PostgreSQL usá
DATABASE_URL (opción A) o las variables DB_* individuales (opción B). Cuando DATABASE_URL está definida, el driver pg la usa de forma exclusiva y habilita SSL automáticamente (útil en entornos como Render). Si DATABASE_URL no está definida, se utilizan las variables DB_HOST, DB_PORT, DB_NAME, DB_USER y DB_PASSWORD.Frontend (frontend/.env)
| Variable | Requerida | Valor por defecto | Descripción |
|---|---|---|---|
VITE_API_URL | Sí | — | URL base de la API REST del backend (sin / al final) |