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:
358
README.md
Normal file
358
README.md
Normal 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.
|
||||
Reference in New Issue
Block a user