- README.md con guía completa de instalación y arquitectura - docs/BACKEND.md — guía detallada del API - docs/FRONTEND.md — guía del SPA React - docs/DATABASE.md — funciones SQL y patrones de datos - docs/API.md — referencia completa de endpoints REST - docs/DEPLOYMENT.md — guía de despliegue en producción - docs/TROUBLESHOOTING.md — solución de problemas comunes - CHANGELOG.md — historial de cambios - CONTRIBUTING.md — guía de contribución
302 lines
11 KiB
Markdown
302 lines
11 KiB
Markdown
# 🏨 Hacienda San Angel — Sistema de Gestión Hotelera
|
|
|
|
> **Versión:** 1.0.0
|
|
> **Entorno:** Node.js + PostgreSQL + React 19
|
|
> **Repositorio:** `https://git.consultoria-as.com/consultoria-as/hotel-hacienda`
|
|
|
|
---
|
|
|
|
## 📋 Índice
|
|
|
|
1. [Descripción del Proyecto](#descripción-del-proyecto)
|
|
2. [Arquitectura General](#arquitectura-general)
|
|
3. [Estructura del Repositorio](#estructura-del-repositorio)
|
|
4. [Tecnologías](#tecnologías)
|
|
5. [Instalación y Configuración](#instalación-y-configuración)
|
|
6. [Scripts Disponibles](#scripts-disponibles)
|
|
7. [Documentación Adicional](#documentación-adicional)
|
|
8. [Integraciones Externas](#integraciones-externas)
|
|
9. [Seguridad y Autenticación](#seguridad-y-autenticación)
|
|
10. [Créditos](#créditos)
|
|
|
|
---
|
|
|
|
## Descripción del Proyecto
|
|
|
|
Sistema administrativo integral para la gestión financiera, operativa y de recursos humanos del hotel **Hacienda San Angel**. El sistema gestiona:
|
|
|
|
- **Ingresos:** Little Hotelier, Stripe, Facturas electrónicas (Horux), análisis P&L
|
|
- **Gastos:** Aprobaciones, pagos, reportes, pagos mensuales recurrentes
|
|
- **Nómina:** Empleados, contratos, asistencia, puestos, áreas
|
|
- **Inventario:** Productos, proveedores, ajustes de stock, consumos, descartes
|
|
- **Configuraciones:** Habitaciones, propiedades, catálogos maestros
|
|
- **Reportes:** Dashboards, análisis de habitaciones, análisis de restaurante
|
|
|
|
---
|
|
|
|
## Arquitectura General
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ CLIENTE (Browser) │
|
|
│ React 19 + Vite + React Router │
|
|
│ Puerto: 5172 (dev) │
|
|
└──────────────────────┬──────────────────────────────────────┘
|
|
│ HTTP / JSON
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ SERVIDOR API (Node.js) │
|
|
│ Express 5 + CORS + Nodemailer │
|
|
│ Puerto: 3000-4000 │
|
|
│ │
|
|
│ Endpoints: /api/auth, /api/employees, /api/expenses, │
|
|
│ /api/products, /api/incomes, /api/incomeshrx, etc. │
|
|
└──────────────────────┬──────────────────────────────────────┘
|
|
│ SQL (funciones PostgreSQL)
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ BASE DE DATOS (PostgreSQL) │
|
|
│ │
|
|
│ Lógica de negocio implementada en funciones SQL: │
|
|
│ newexpensev2(), purchaseentry(), setpaymentstatusv2(), │
|
|
│ getincomehorux(), addstripedatav2(), etc. │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
**Patrón arquitectónico:** MVC simplificado donde los **Controllers** solo orquestan llamadas a funciones PostgreSQL. La lógica de negocio reside principalmente en la base de datos.
|
|
|
|
---
|
|
|
|
## Estructura del Repositorio
|
|
|
|
```
|
|
hotel-hacienda/
|
|
├── backend/
|
|
│ └── hotel_hacienda/ # API REST Node.js
|
|
│ ├── src/
|
|
│ │ ├── server.js # Entry point
|
|
│ │ ├── app.js # Config Express + rutas
|
|
│ │ ├── db/connection.js # Pool PostgreSQL
|
|
│ │ ├── controllers/ # 18 controllers
|
|
│ │ ├── routes/ # 16 archivos de rutas
|
|
│ │ ├── middlewares/ # Validaciones
|
|
│ │ └── services/ # Nodemailer
|
|
│ ├── .env # Variables de entorno (NO subir)
|
|
│ └── package.json
|
|
│
|
|
├── frontend/
|
|
│ └── Frontend-Hotel/ # SPA React
|
|
│ ├── src/
|
|
│ │ ├── main.jsx # Entry point React
|
|
│ │ ├── App.jsx # Enrutamiento
|
|
│ │ ├── components/ # Layout, Tablas, Modales, etc.
|
|
│ │ ├── pages/ # ~50+ páginas por dominio
|
|
│ │ ├── context/ # AuthContext, LangContext
|
|
│ │ ├── services/ # API clients
|
|
│ │ ├── constants/ # Configuración de menú
|
|
│ │ └── styles/ # CSS por componente
|
|
│ ├── public/ # Assets estáticos
|
|
│ ├── .env # VITE_API_BASE_URL
|
|
│ └── package.json
|
|
│
|
|
├── backupcondatos22122025.sql # Backup de base de datos
|
|
├── DOCUMENTACION_TECNICA.md # Documentación técnica completa
|
|
├── README.md # Este archivo
|
|
└── docs/ # Documentación extendida
|
|
├── BACKEND.md
|
|
├── FRONTEND.md
|
|
├── DATABASE.md
|
|
├── API.md
|
|
├── DEPLOYMENT.md
|
|
└── TROUBLESHOOTING.md
|
|
```
|
|
|
|
---
|
|
|
|
## Tecnologías
|
|
|
|
### Backend
|
|
| Tecnología | Versión | Propósito |
|
|
|-----------|---------|-----------|
|
|
| Node.js | — | Runtime |
|
|
| Express | ^5.1.0 | Framework web |
|
|
| PostgreSQL | — | Base de datos |
|
|
| pg (node-postgres) | ^8.16.3 | Driver PostgreSQL |
|
|
| Axios | ^1.13.2 | HTTP client para APIs externas |
|
|
| Nodemailer | ^7.0.12 | Envío de correos |
|
|
| Stripe | ^20.1.0 | Integración de pagos |
|
|
| xlsx / csv-parser | ^0.18.5 / ^3.2.0 | Procesamiento de archivos |
|
|
| express-validator | ^7.2.1 | Validación de inputs |
|
|
| dotenv | ^17.2.2 | Variables de entorno |
|
|
|
|
### Frontend
|
|
| Tecnología | Versión | Propósito |
|
|
|-----------|---------|-----------|
|
|
| React | ^19.1.1 | UI Library |
|
|
| React DOM | ^19.1.1 | Renderizado |
|
|
| React Router DOM | ^7.8.2 | Enrutamiento SPA |
|
|
| Vite | ^7.1.2 | Build tool y dev server |
|
|
| Axios | ^1.11.0 | HTTP client |
|
|
| Tailwind CSS | ^4.1.13 | Framework CSS (uso parcial) |
|
|
| Bootstrap | ^5.3.8 | Framework CSS (uso parcial) |
|
|
| react-hook-form | ^7.66.1 | Manejo de formularios |
|
|
| Yup | ^1.7.1 | Validación de esquemas |
|
|
| xlsx | ^0.18.5 | Exportación a Excel |
|
|
| react-icons | ^5.5.0 | Iconografía |
|
|
|
|
---
|
|
|
|
## Instalación y Configuración
|
|
|
|
### Requisitos Previos
|
|
- Node.js 18+
|
|
- PostgreSQL 13+
|
|
- npm o pnpm
|
|
|
|
### 1. Clonar el Repositorio
|
|
|
|
```bash
|
|
git clone https://git.consultoria-as.com/consultoria-as/hotel-hacienda.git
|
|
cd hotel-hacienda
|
|
```
|
|
|
|
### 2. Configurar Base de Datos
|
|
|
|
Restaurar el backup de PostgreSQL:
|
|
|
|
```bash
|
|
psql -U postgres -c "CREATE DATABASE hotel_hacienda;"
|
|
psql -U postgres -d hotel_hacienda -f backupcondatos22122025.sql
|
|
```
|
|
|
|
> **Nota:** El backup contiene las funciones SQL, tablas, catálogos y datos maestros del sistema.
|
|
|
|
### 3. Configurar Backend
|
|
|
|
```bash
|
|
cd backend/hotel_hacienda
|
|
cp .env.example .env # Si no existe, crear manualmente
|
|
npm install
|
|
```
|
|
|
|
Archivo `.env` del backend:
|
|
```env
|
|
PORT=3000
|
|
URL_CORS=https://hotel.consultoria-as.com
|
|
|
|
# PostgreSQL
|
|
DB_HOST=localhost
|
|
DB_PORT=5432
|
|
DB_USER=postgres
|
|
DB_PASSWORD=TU_PASSWORD
|
|
DB_NAME=hotel_hacienda
|
|
|
|
# Email
|
|
EMAIL_HOST=smtp.tudominio.com
|
|
EMAIL_PORT=587
|
|
EMAIL_USER=soporte@horuxfin.com
|
|
EMAIL_PASS=TU_PASSWORD
|
|
|
|
# Stripe
|
|
STRIPE_SECRET_KEY=sk_test_...
|
|
|
|
# API Facturas (México)
|
|
FACTURAS_API_URL=https://api.facturas.com/...
|
|
FACTURAS_ISSUER_RFC=RFC_EMISOR
|
|
FACTURAS_TYPE=I
|
|
FACTURAS_API_TOKEN=token_aqui
|
|
|
|
# Banxico
|
|
BANXICO_TOKEN=token_banxico
|
|
```
|
|
|
|
### 4. Iniciar Backend
|
|
|
|
```bash
|
|
npm run dev # Desarrollo con nodemon
|
|
# o
|
|
npm start # Producción
|
|
```
|
|
|
|
### 5. Configurar Frontend
|
|
|
|
```bash
|
|
cd frontend/Frontend-Hotel
|
|
cp .env.example .env
|
|
npm install
|
|
```
|
|
|
|
Archivo `.env` del frontend:
|
|
```env
|
|
VITE_API_BASE_URL=http://localhost:3000/api
|
|
```
|
|
|
|
### 6. Iniciar Frontend
|
|
|
|
```bash
|
|
npm run dev # Puerto 5172
|
|
```
|
|
|
|
---
|
|
|
|
## Scripts Disponibles
|
|
|
|
### Backend (`backend/hotel_hacienda/`)
|
|
| Script | Comando | Descripción |
|
|
|--------|---------|-------------|
|
|
| `start` | `node src/server.js` | Producción |
|
|
| `dev` | `nodemon src/server.js` | Desarrollo con hot reload |
|
|
|
|
### Frontend (`frontend/Frontend-Hotel/`)
|
|
| Script | Comando | Descripción |
|
|
|--------|---------|-------------|
|
|
| `dev` | `vite` | Servidor de desarrollo |
|
|
| `build` | `vite build` | Build de producción |
|
|
| `preview` | `vite preview` | Previsualizar build |
|
|
| `lint` | `eslint .` | Linting del código |
|
|
|
|
---
|
|
|
|
## Documentación Adicional
|
|
|
|
- [`DOCUMENTACION_TECNICA.md`](./DOCUMENTACION_TECNICA.md) — Análisis técnico completo, endpoints, roles, integraciones y reglas de oro para no romper integridad.
|
|
- [`docs/BACKEND.md`](./docs/BACKEND.md) — Guía detallada del backend: estructura de carpetas, controllers, servicios y configuración.
|
|
- [`docs/FRONTEND.md`](./docs/FRONTEND.md) — Guía del frontend: componentes, rutas, manejo de estado, permisos y estilos.
|
|
- [`docs/DATABASE.md`](./docs/DATABASE.md) — Documentación de la base de datos: funciones SQL conocidas, tablas principales y relaciones.
|
|
- [`docs/API.md`](./docs/API.md) — Referencia completa de todos los endpoints REST.
|
|
- [`docs/DEPLOYMENT.md`](./docs/DEPLOYMENT.md) — Guía de despliegue en producción.
|
|
- [`docs/TROUBLESHOOTING.md`](./docs/TROUBLESHOOTING.md) — Problemas comunes y soluciones.
|
|
|
|
---
|
|
|
|
## Integraciones Externas
|
|
|
|
| Servicio | Uso | Archivo Relacionado |
|
|
|----------|-----|---------------------|
|
|
| **Banxico API** | Tipo de cambio USD/MXN | `exchange.controller.js` |
|
|
| **Stripe API** | Transfers y balance transactions | `incomehrx.controller.js` |
|
|
| **API Facturas** | Descarga de facturas electrónicas (México) | `incomehrx.controller.js` |
|
|
| **Nodemailer/SMTP** | Correos transaccionales | `mail.controller.js`, `auth.controller.js` |
|
|
|
|
---
|
|
|
|
## Seguridad y Autenticación
|
|
|
|
> ⚠️ **Advertencia de seguridad:** Este sistema utiliza autenticación básica basada en función SQL (`validarusuario`) sin JWT ni middleware de autorización en los endpoints del backend. El control de acceso se realiza principalmente en el frontend mediante un número de rol guardado en `localStorage`.
|
|
>
|
|
> **Recomendación:** Para producción, considerar implementar:
|
|
> - JWT o API Keys en el backend
|
|
> - Middleware de autorización por rol
|
|
> - HTTPS obligatorio
|
|
> - Sanitización adicional de inputs
|
|
|
|
---
|
|
|
|
## Créditos
|
|
|
|
Desarrollado para **Consultoría AS** — Hacienda San Angel.
|
|
|
|
---
|
|
|
|
> **Mantenimiento:** Si realizas cambios significativos, actualiza tanto el código como la documentación correspondiente para mantener la integridad del sistema.
|