ERP a la medida (Python stdlib + SQLite + vanilla JS SPA). Incluye server.py, index.html, utilidades y documentación: README, MODELO_DATOS, API, INSTALACION, CONTEXTO, NEGOCIO, WEB, ONBOARDING, VALOR_SISTEMA, CLAUDE. Secretos y datos (art4hotel.db, secret.key, ACCESOS.html, uploads/, backups/) excluidos vía .gitignore. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
112 lines
5.0 KiB
Markdown
112 lines
5.0 KiB
Markdown
# 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.*
|