Builder multi-proveedor de servicios (tour / A&B / transportacion). Python stdlib + SQLite + vanilla JS SPA. Hereda filosofia del Hub. Secretos y datos (catalogo.db, secret.key, uploads/) excluidos via .gitignore. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Catálogo de Servicios (builder)
Builder de catálogo multi-proveedor de servicios (tours, A&B/banquetes, transportación) para Los Cabos, México.
Hereda la filosofía del Art4Hotel Hub, pero aplicada a servicios (no productos físicos): capturar en una sola base de datos la oferta de varios touroperadores/proveedores, con fotos y todos los atributos, para luego generar propuestas y una página web de catálogo online.
Proyecto independiente. No toca el Hub.
✨ Qué hace
- Proveedores — alta de touroperadores / proveedores (contacto, comisión default)
- Servicios — la fuente única de verdad: identidad, operación, precios neto/público, condiciones, publicación
- Atributos flexibles por tipo — extras específicos en JSON (no rompen el esquema)
- Disponibilidad — 4 modos (salidas / rango / siempre / por evento) con editor adaptativo
- Fotos y menú — galería por servicio + galería de menú separada por prefijo
- Dos vistas — Builder (con margen/precio neto) y Vista cliente (catálogo limpio, oculta lo interno)
- Login — usuario/contraseña (PBKDF2) + sesión firmada (HMAC)
🧱 Stack
| Capa | Tecnología |
|---|---|
| Backend | Python 3 stdlib (http.server + sqlite3) — cero dependencias |
| Base de datos | SQLite (WAL, foreign keys) |
| Frontend | Vanilla JS SPA en un solo index.html |
| Archivos | Filesystem (uploads/servicio_{id}/) |
| Deploy | scp + systemctl |
Mismo patrón que el Hub: CRUD genérico vía dict TABLES en server.py (un handler para todas las tablas).
🚀 Arranque rápido
python3 server.py
# → http://localhost:4403
Primera vez: pantalla para crear la cuenta admin (genera catalogo.db y secret.key).
Ver INSTALACION.md para el despliegue en servidor.
📁 Estructura
catalogo-borrador/
├── server.py # Backend: HTTP + SQLite + API + auth
├── index.html # Frontend: SPA (builder + vista cliente)
├── README.md # Este archivo
├── MODELO_DATOS.md # Esquema de la base de datos
├── API.md # Referencia de endpoints
├── INSTALACION.md # Despliegue desde cero
└── CLAUDE.md # Contexto técnico detallado (para asistentes IA)
No incluidos (ver
.gitignore):catalogo.db,secret.key,uploads/.
🔑 Principio de diseño: el servicio = fuente única de verdad
Cada atributo de un servicio impacta hasta 3 funciones. Antes de agregar/cambiar uno, define su impacto en:
- Operación — disponibilidad, horarios, capacidad, precio neto
- Propuesta / cotizador — lo que ve el cliente, precio público, términos
- Página web — catálogo online
Neto vs público: precio_neto = lo que cobra el proveedor · precio_publico = lo que paga el cliente. El margen vive en medio y nunca se muestra al cliente (la Vista cliente lo oculta).
🗺 Fases
- ✅ Builder — proveedores + servicios con fotos y todos los campos (actual)
- ⏳ Propuestas/catálogos — selección de servicios → documento → PDF (reusar patrón del Hub)
- ⏳ Web pública — catálogo online optimizado (sync desde la DB)
Parte del ecosistema Art4Hotel · Los Cabos, BCS, México.