- Fix 7 backend controllers: rename columns to match actual DB schema (name_room→room_number, id_room→id, bed_type→room_type, id_employee→id, status_employee→status) - Fix 10 frontend files with matching property renames - Add ThemeContext with dark/light toggle (localStorage persisted) - Redesign theme.css with [data-theme] attribute selectors - Add Google Fonts (Syne, DM Sans, JetBrains Mono) - Redesign sidebar, topbar, and login page CSS - Migrate ~44 legacy CSS files from hardcoded colors to CSS variables - Remove Dashboards/Tableros section from menu - Clean up commented-out CSS blocks across codebase Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hacienda San Angel - Sistema de Gestion Hotelera
Sistema integral de gestion para el hotel Hacienda San Angel. Incluye modulos de administracion de empleados, nomina, inventario, gastos, ingresos, y reporteria.
Documentacion
- Arquitectura y Diagramas de Base de Datos - Diagramas ERD, arquitectura del sistema y flujo de datos
Tecnologias
Backend
- Node.js con Express 5
- PostgreSQL 15 como base de datos
- Nodemailer para envio de correos (Brevo/Sendinblue)
- Stripe para procesamiento de pagos
- Axios para consultas externas (tipo de cambio Banxico)
Frontend
- React 19 con Vite 7
- React Router DOM 7 para navegacion
- React Hook Form + Yup para validacion de formularios
- Bootstrap 5 + Tailwind CSS para estilos
- Axios para peticiones HTTP
- XLSX para exportacion de datos a Excel
Infraestructura
- Docker y Docker Compose para contenedorizacion
- PostgreSQL 15 en contenedor
Estructura del Proyecto
Hotel/
├── backend/
│ ├── Dockerfile
│ └── hotel_hacienda/
│ ├── src/
│ │ ├── app.js # Configuracion Express
│ │ ├── server.js # Punto de entrada
│ │ ├── controllers/ # Logica de negocio
│ │ ├── routes/ # Definicion de rutas API
│ │ ├── middlewares/ # Validadores
│ │ ├── db/ # Conexion a PostgreSQL
│ │ └── services/ # Servicios (email)
│ ├── scripts bd/ # Scripts SQL para la BD
│ └── package.json
├── frontend/
│ ├── Dockerfile
│ └── Frontend-Hotel/
│ ├── src/
│ │ ├── App.jsx # Rutas principales
│ │ ├── main.jsx # Punto de entrada
│ │ ├── components/ # Componentes reutilizables
│ │ ├── pages/ # Paginas de la aplicacion
│ │ ├── services/ # Servicios API
│ │ ├── context/ # Context API
│ │ └── styles/ # Estilos globales
│ └── package.json
├── docker-compose.yml
├── .env.example
└── README.md
Modulos del Sistema
1. Dashboard
- Income: Vista general de ingresos
- Hotel P&L: Estado de perdidas y ganancias del hotel
- Restaurant P&L: Estado de perdidas y ganancias del restaurante
- Budget: Presupuesto
- Cost Per Room: Costo por habitacion
- Room Analysis: Analisis de ocupacion de habitaciones
- Expenses: Resumen de gastos
2. Nomina y Empleados (Payroll)
- Gestion de empleados (alta, baja, modificacion)
- Contratos laborales
- Control de asistencia
- Uniformes
- Pago diario
3. Gastos (Expenses)
- Registro de gastos
- Pagos mensuales recurrentes
- Aprobacion de gastos (flujo de aprobacion)
- Proveedores
- Reportes de gastos
- Entradas de compras
4. Inventario (Inventory)
- Catalogo de productos
- Ajustes de inventario
- Salidas de inventario
- Salidas de ama de llaves (Housekeeper)
- Reportes de inventario
- Descarte de productos
5. Ingresos (Income)
- Registro de ingresos
- Reportes de ingresos
- Integracion con sistema Horux
6. Hotel
- Gestion de propiedades
- Gestion de habitaciones
7. Configuracion (Settings)
- Gestion de habitaciones
- Configuracion del sistema
- Gestion de usuarios
API Endpoints
Autenticacion
POST /api/auth/login- Iniciar sesionPOST /api/auth/create- Crear usuarioPOST /api/auth/recover- Recuperar contrasena
Empleados
GET /api/employees- Listar empleadosPOST /api/employees/new- Crear empleadoPUT /api/employees/update- Actualizar empleadoGET /api/employees/attendance- Obtener asistencia
Contratos
GET /api/contracts- Listar contratosPOST /api/contracts- Crear contratoPUT /api/contracts- Actualizar contrato
Productos/Inventario
GET /api/products- Listar productosPOST /api/products- Crear productoPUT /api/products- Actualizar producto
Gastos
GET /api/expenses- Listar gastosPOST /api/expenses- Crear gastoPUT /api/expenses- Actualizar gastoGET /api/expenses/pending- Gastos pendientes de aprobacion
Ingresos
GET /api/incomes- Listar ingresosPOST /api/incomes- Registrar ingresoGET /api/incomeshrx- Ingresos Horux
Pagos
POST /api/payment- Procesar pago con Stripe
Tipo de Cambio
GET /api/exchange- Obtener tipo de cambio (Banxico)
Configuracion
GET /api/settings- Obtener configuracionPUT /api/settings- Actualizar configuracion
Guia de Instalacion
Requisitos Previos
- Docker y Docker Compose instalados
- Git
Opcion 1: Instalacion con Docker (Recomendado)
- Clonar el repositorio
git clone https://git.consultoria-as.com/usuario/Hacienda-San-Angel.git
cd Hacienda-San-Angel
- Configurar variables de entorno
cp .env.example .env
Editar el archivo .env con los valores correspondientes:
POSTGRES_PASSWORD=tu_password_seguro
EMAIL_USER=tu_email@ejemplo.com
EMAIL_PASS=tu_api_key_brevo
BANXICO_TOKEN=tu_token_banxico
- Construir e iniciar los contenedores
docker-compose up -d --build
- Verificar que los servicios esten corriendo
docker-compose ps
- Importar la base de datos
# Copiar el archivo SQL al contenedor
docker cp backupcondatos22122025.sql postgres_db:/tmp/
# Ejecutar el script SQL
docker exec -it postgres_db psql -U oposgres -d haciendasanangel -f /tmp/backupcondatos22122025.sql
- Acceder a la aplicacion
- Frontend: http://localhost:5172
- Backend API: http://localhost:4000/api
Opcion 2: Instalacion Manual (Desarrollo)
Backend
- Navegar al directorio del backend
cd backend/hotel_hacienda
- Instalar dependencias
npm install
- Configurar variables de entorno
cp .env.example .env
# Editar .env con los valores correspondientes
- Iniciar el servidor
npm run dev # Desarrollo con nodemon
npm start # Produccion
Frontend
- Navegar al directorio del frontend
cd frontend/Frontend-Hotel
- Instalar dependencias
npm install
- Configurar variables de entorno
cp .env.example .env
# Editar .env con la URL del API
- Iniciar la aplicacion
npm run dev # Desarrollo
npm run build # Construir para produccion
Base de Datos
Configuracion
- Motor: PostgreSQL 15
- Base de datos: haciendasanangel
- Usuario: oposgres
Scripts SQL
Los scripts de la base de datos se encuentran en backend/hotel_hacienda/scripts bd/funcionesparaproduccion/. Incluyen:
- Funciones para empleados y contratos
- Funciones para gastos e ingresos
- Funciones para inventario
- Funciones para reporteria
- Funciones de autenticacion
Variables de Entorno
Backend (.env)
| Variable | Descripcion |
|---|---|
| PORT | Puerto del servidor (default: 4000) |
| DB_HOST | Host de PostgreSQL |
| DB_PORT | Puerto de PostgreSQL (default: 5432) |
| DB_USER | Usuario de PostgreSQL |
| DB_PASSWORD | Contrasena de PostgreSQL |
| DB_NAME | Nombre de la base de datos |
| EMAIL_HOST | Servidor SMTP |
| EMAIL_PORT | Puerto SMTP |
| EMAIL_USER | Usuario SMTP |
| EMAIL_PASS | Contrasena/API Key SMTP |
| URL_CORS | URL permitida para CORS |
| BANXICO_TOKEN | Token API de Banxico |
| STRIPE_SECRET_KEY | Llave secreta de Stripe |
Frontend (.env)
| Variable | Descripcion |
|---|---|
| VITE_API_BASE_URL | URL base del API backend |
Despliegue en Produccion
Con Docker Compose
-
Asegurarse de tener configurado el archivo
.envcon valores de produccion -
Modificar
docker-compose.ymlsi es necesario:- Cambiar
URL_CORSa tu dominio de produccion - Configurar volumenes persistentes para la base de datos
- Cambiar
-
Iniciar los servicios:
docker-compose up -d
Notas de Seguridad
- Cambiar las contrasenas por defecto
- Usar HTTPS en produccion (configurar con nginx o similar)
- Respaldar la base de datos regularmente
- No exponer el puerto de PostgreSQL al exterior
Mantenimiento
Respaldo de Base de Datos
docker exec postgres_db pg_dump -U oposgres haciendasanangel > backup_$(date +%Y%m%d).sql
Ver logs
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f postgres
Reiniciar servicios
docker-compose restart
Licencia
Proyecto privado - Hacienda San Angel
Contacto
Para soporte tecnico, contactar al equipo de desarrollo.
Description
Languages
JavaScript
86.8%
CSS
13.1%