Commit inicial - Sistema de Gestion Hotelera Hacienda San Angel

- Backend Node.js/Express con PostgreSQL
- Frontend React 19 con Vite
- Docker Compose para orquestacion
- Documentacion completa en README.md
- Scripts SQL para base de datos
- Configuracion de ejemplo (.env.example)
This commit is contained in:
Consultoria AS
2026-01-17 18:52:34 -08:00
commit 0211bea186
210 changed files with 47045 additions and 0 deletions

358
README.md Normal file
View File

@@ -0,0 +1,358 @@
# 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.
## 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 sesion
- `POST /api/auth/create` - Crear usuario
- `POST /api/auth/recover` - Recuperar contrasena
### Empleados
- `GET /api/employees` - Listar empleados
- `POST /api/employees/new` - Crear empleado
- `PUT /api/employees/update` - Actualizar empleado
- `GET /api/employees/attendance` - Obtener asistencia
### Contratos
- `GET /api/contracts` - Listar contratos
- `POST /api/contracts` - Crear contrato
- `PUT /api/contracts` - Actualizar contrato
### Productos/Inventario
- `GET /api/products` - Listar productos
- `POST /api/products` - Crear producto
- `PUT /api/products` - Actualizar producto
### Gastos
- `GET /api/expenses` - Listar gastos
- `POST /api/expenses` - Crear gasto
- `PUT /api/expenses` - Actualizar gasto
- `GET /api/expenses/pending` - Gastos pendientes de aprobacion
### Ingresos
- `GET /api/incomes` - Listar ingresos
- `POST /api/incomes` - Registrar ingreso
- `GET /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 configuracion
- `PUT /api/settings` - Actualizar configuracion
---
## Guia de Instalacion
### Requisitos Previos
- Docker y Docker Compose instalados
- Git
### Opcion 1: Instalacion con Docker (Recomendado)
1. **Clonar el repositorio**
```bash
git clone https://git.consultoria-as.com/usuario/Hacienda-San-Angel.git
cd Hacienda-San-Angel
```
2. **Configurar variables de entorno**
```bash
cp .env.example .env
```
Editar el archivo `.env` con los valores correspondientes:
```env
POSTGRES_PASSWORD=tu_password_seguro
EMAIL_USER=tu_email@ejemplo.com
EMAIL_PASS=tu_api_key_brevo
BANXICO_TOKEN=tu_token_banxico
```
3. **Construir e iniciar los contenedores**
```bash
docker-compose up -d --build
```
4. **Verificar que los servicios esten corriendo**
```bash
docker-compose ps
```
5. **Importar la base de datos**
```bash
# 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
```
6. **Acceder a la aplicacion**
- Frontend: http://localhost:5172
- Backend API: http://localhost:4000/api
### Opcion 2: Instalacion Manual (Desarrollo)
#### Backend
1. **Navegar al directorio del backend**
```bash
cd backend/hotel_hacienda
```
2. **Instalar dependencias**
```bash
npm install
```
3. **Configurar variables de entorno**
```bash
cp .env.example .env
# Editar .env con los valores correspondientes
```
4. **Iniciar el servidor**
```bash
npm run dev # Desarrollo con nodemon
npm start # Produccion
```
#### Frontend
1. **Navegar al directorio del frontend**
```bash
cd frontend/Frontend-Hotel
```
2. **Instalar dependencias**
```bash
npm install
```
3. **Configurar variables de entorno**
```bash
cp .env.example .env
# Editar .env con la URL del API
```
4. **Iniciar la aplicacion**
```bash
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
1. Asegurarse de tener configurado el archivo `.env` con valores de produccion
2. Modificar `docker-compose.yml` si es necesario:
- Cambiar `URL_CORS` a tu dominio de produccion
- Configurar volumenes persistentes para la base de datos
3. Iniciar los servicios:
```bash
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
```bash
docker exec postgres_db pg_dump -U oposgres haciendasanangel > backup_$(date +%Y%m%d).sql
```
### Ver logs
```bash
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f postgres
```
### Reiniciar servicios
```bash
docker-compose restart
```
---
## Licencia
Proyecto privado - Hacienda San Angel
---
## Contacto
Para soporte tecnico, contactar al equipo de desarrollo.