# Art4Hotel Hub Sistema interno de gestión integral (ERP a la medida) para **Art4Hotel** — bolsas y accesorios personalizados para hoteles, restaurantes y eventos en Los Cabos, México. Centraliza todo el ciclo del negocio: **cotización → producción → bodega → entrega → cobranza**, más un catálogo digital, generador de catálogos PDF y sincronización con el sitio web público. --- ## ✨ Características - **Operaciones** — kanban de producción con drag & drop por etapas - **Ventas** — dashboard de KPIs, workflow de cobranza por OC, gestión de entregas - **Clientes** — CRM con historial, condiciones de pago, zonas - **Propuestas** — cotizador visual; convierte propuestas aceptadas en órdenes + pedidos - **Catálogos** — generador de catálogo PDF con la marca, con storytelling (producto base + galería de personalizaciones) - **Productos** — catálogo unificado (fuente única de verdad) - **Inventario** — SKUs, stock, punto de reorden - **Archivos** — facturas, fotos, recibos con nombres inteligentes - **Sitio web** — alimenta art4hotel.com vía script de sincronización - **Login** — autenticación con sesiones firmadas (HMAC) - **Respaldos** — automáticos diarios --- ## 🧱 Stack | Capa | Tecnología | |---|---| | Backend | **Python 3 stdlib** (`http.server` + `sqlite3`) — cero dependencias externas | | Base de datos | **SQLite** (WAL, foreign keys) — un solo archivo | | Frontend | **Vanilla JS SPA** en un solo `index.html` — sin frameworks | | Archivos | Filesystem (`uploads/`) servido por el mismo server | | Deploy | `scp` + `systemctl` — sin Docker, sin CI/CD | Filosofía: **minimalismo deliberado**. Todo el sistema (código + datos) pesa <1 MB. Cabe en una USB. Sin licencias, sin dependencias que mantener. --- ## 🚀 Arranque rápido ```bash # Requiere solo Python 3 (stdlib). Sin pip install. python3 server.py # → http://localhost:4401 ``` La primera vez, la app muestra una pantalla para **crear la cuenta de administrador**. Después, login normal. Ver **[INSTALACION.md](./INSTALACION.md)** para el despliegue completo en servidor. --- ## 📁 Estructura del repositorio ``` art4hotel-hub/ ├── server.py # Backend: HTTP server + SQLite + API REST + auth ├── index.html # Frontend: SPA completa (~9000 líneas) ├── backup.py # Script de respaldo (DB + uploads) ├── fix_dup.py # Utilidad: corrige IDs duplicados ├── README.md # Este archivo ├── INSTALACION.md # Guía de despliegue desde cero ├── MODELO_DATOS.md # Esquema de la base de datos (14 tablas) ├── API.md # Referencia de endpoints ├── CONTEXTO.md # Estado técnico: decisiones, optimizaciones, deploy ├── NEGOCIO.md # Contexto operativo: clientes, productos, flujo real ├── WEB.md # Sitio público art4hotel.com + sync ├── ONBOARDING.md # Handover técnico rápido ├── CLAUDE.md # Índice maestro + contexto para asistentes IA └── VALOR_SISTEMA.md # Valor/costo del sistema (para presentar a terceros) ``` > **No incluidos en el repo** (por seguridad / ver `.gitignore`): `art4hotel.db` (datos del negocio), `secret.key` (clave de sesiones), `ACCESOS.html` (contraseñas), `uploads/`, `backups/`. --- ## 📚 Documentación | Documento | Para qué | |---|---| | **[NEGOCIO.md](./NEGOCIO.md)** | Entender el negocio: clientes, productos, flujo real, reglas. **Léelo primero.** | | **[CONTEXTO.md](./CONTEXTO.md)** | Estado técnico: modelo de datos, producto unificado, catálogos, decisiones UX | | **[MODELO_DATOS.md](./MODELO_DATOS.md)** | Esquema completo de la base de datos | | **[API.md](./API.md)** | Referencia de endpoints REST | | **[INSTALACION.md](./INSTALACION.md)** | Desplegar desde cero | | **[WEB.md](./WEB.md)** | Sitio público + sincronización | | **[ONBOARDING.md](./ONBOARDING.md)** | Repaso técnico rápido | | **[VALOR_SISTEMA.md](./VALOR_SISTEMA.md)** | Valor/costo del sistema | --- ## 🔑 Conceptos clave - **Pedido** (`ordenes`) — línea de producción individual (1 producto × 1 personalización × cantidad) - **Orden de Compra (OC)** (`oc`) — agrupa pedidos, lleva la factura/cobranza - **Proyecto recurrente** (`proyectos`) — receta autorizada reutilizable (cliente + producto + trabajo + logo) - **Propuesta** (`propuestas`) — cotización; al aceptarse genera OC + pedidos - **Stages** del kanban: `Nuevo → En 2 Mares / En Taller Sofía → En Almacén → En Vehículo → Entregado` ### ⚠️ Principio de diseño: el producto es la fuente única de verdad Cada atributo de producto impacta hasta 3 funciones. Antes de agregar/cambiar uno, definir su impacto en: **(1) Operación/producción · (2) Catálogo/cotizador · (3) Página web**. --- ## 🛡 Respaldos `backup.py` corre por cron diario: snapshot de la DB (online backup, seguro con WAL) + `uploads.tar.gz`. Retiene 30 días. --- *Sistema desarrollado para Art4Hotel · Los Cabos, BCS, México.*