# 📖 Documentación del Proyecto - GKACHELE™ **© 2025 GKACHELE™. Todos los derechos reservados.** ## 🎯 ¿Qué Estamos Construyendo? Un **SaaS (Software as a Servicio)** para que clientes creen y gestionen sus propios sitios web, similar a sistemas populares pero mejorado y personalizado. ### Funcionalidad Principal: - Clientes se registran → Crean su sitio → Lo personalizan → Lo publican - Todo desde una interfaz web simple - Sistema multi-tenant (todos los clientes en una sola base de datos) --- ## 🏗️ Arquitectura Técnica ### ¿Por qué Python/Flask y NO Docker? **Sí, es por la Raspberry Pi:** - Raspberry Pi tiene recursos limitados - Docker consume más memoria y CPU - Python directo es más ligero y eficiente - Más fácil de depurar y mantener - **En VPS podrías usar Docker si quieres**, pero Python directo también funciona perfecto ### Stack Tecnológico: - **Backend:** Flask (Python 3) - **Base de Datos:** SQLite (`main.db` - multi-tenant) - **Frontend:** HTML, CSS, JavaScript - **Servidor Web:** Nginx (reverse proxy) - **Hosting:** Raspberry Pi 3 (actual) / VPS (recomendado para producción) --- ## 🗄️ Base de Datos ### Estructura Multi-tenant: **TODO en una sola base de datos (`main.db`):** - `users` - Todos los usuarios/clientes - `sites` - Todos los sitios (filtrados por `user_id`) - `menus` - Menús dinámicos - `widgets` - Widgets dinámicos - `content` - Contenido - `settings` - Configuraciones - `requests` - Solicitudes de publicación - `media` - Archivos subidos ### Acceso a Base de Datos: - **Tu acceso:** Panel `/admin` (solo rol `administrator`) - **Acceso clientes:** Solo ven SUS datos (filtrado por `user_id`) - **Herramientas:** DB Browser for SQLite, scripts Python (`ver_usuarios.py`, `limpiar_db.py`) --- ## 👥 Sistema de Usuarios y Roles ### Roles (desde Base de Datos): - `administrator` - Acceso total (tú) - `editor` - Puede editar contenido - `author` - Puede crear contenido - `subscriber` - Solo lectura ### Admin para Clientes: - **Panel `/dashboard`** - Cliente ve SUS sitios - **Panel `/customizer/{site_id}`** - Personalizar sitio - **Panel `/dashboard/admin`** - Admin del cliente (media, config) --- ## 🔒 Limitaciones por Plan ### Sistema Actual: - **Planes:** `base`, `premium`, etc. (campo en tabla `users`) - **Limitaciones posibles:** - Número de sitios - Subida de fotos (tamaño, cantidad) - Modificaciones (frecuencia, tipo) - Funcionalidades avanzadas ### Implementación: - Verificar plan antes de acciones - Contar recursos usados vs. límites del plan - Bloquear acciones si excede límite --- ## 📊 Detección de Movimientos ### Sistema Actual: - **No hay detección automática** de movimientos aún - **Registros disponibles:** - `created_at` - Fecha de creación - `updated_at` - Fecha de actualización - Logs del servidor (journalctl) ### Posibles Mejoras: - Tabla `activity_log` para registrar acciones - Notificaciones de cambios - Historial de modificaciones - Auditoría de cambios --- ## 🚀 VPS vs Raspberry Pi ### Raspberry Pi (Actual): - ✅ Bajo costo - ✅ Suficiente para desarrollo/pruebas - ❌ Recursos limitados - ❌ Puede ser lento con muchos clientes ### VPS (Recomendado para Producción): - ✅ Más recursos (CPU, RAM, disco) - ✅ Mejor rendimiento - ✅ Más confiable - ✅ Mejor para escalar - ✅ Puedes usar Docker si quieres - ✅ Mismo código funciona (solo cambiar configuración) ### Migración a VPS: 1. Copiar código completo 2. Instalar Python3, Nginx 3. Copiar configuración 4. Cambiar dominio 5. Configurar SSL (Let's Encrypt) 6. **Mismo código, más potencia** --- ## 🔄 Flujo Completo del Sistema ``` 1. Cliente → Landing Page 2. Cliente → Registro (/register) ├── Crea usuario en `users` ├── Crea sitio automático en `sites` └── Crea menús por defecto en `menus` 3. Cliente → Login (/login) └── Redirige a `/customizer/{site_id}` (directo) 4. Cliente → Customizer ├── Personaliza contenido ├── Cambia colores, tipografía └── Gestiona menús y widgets 5. Cliente → Envía para aprobación └── Crea solicitud en `requests` 6. Admin → Aprueba desde `/admin` └── Cambia status a `published` 7. Sitio → Público en `/site/{slug}` ``` --- ## 📁 Estructura del Proyecto ``` c:\word\ ├── demo/ # Código principal │ ├── app.py # Flask backend (TODO aquí) │ ├── database/ │ │ └── main.db # Base de datos multi-tenant │ ├── themes/ # Templates │ │ ├── _gkachele/ # Sistema modular (header.php, footer.php, sidebar.php) │ │ └── {tema}/ # Temas específicos │ ├── templates/ # HTML templates │ └── static/ # CSS, JS ├── memoria/ # 📚 TODA LA DOCUMENTACIÓN └── backups/ # Backups automáticos ``` --- ## 🎯 Estado Actual ### ✅ Funcionando: - Registro de clientes - Login (redirige a customizer) - Dashboard del cliente - Customizer (personalización) - Sistema de menús y widgets - Panel admin (ver/eliminar usuarios) - Sistema de roles basado en DB ### ⚠️ Pendiente: - Limitaciones por plan - Detección de movimientos/actividad - Mejorar landing page - Integración Gitea - UI completa para gestionar menús --- ## 🔐 Seguridad - Passwords hasheados (Werkzeug) - Sesiones Flask - Filtrado por `user_id` (cada cliente solo ve sus datos) - Roles desde base de datos (no hardcodeados) - Verificación de permisos en cada ruta --- ## 📝 Próximos Pasos 1. **Implementar limitaciones por plan** 2. **Sistema de actividad/logs** 3. **Mejorar UI del customizer** 4. **Optimizar para VPS** 5. **Añadir más funcionalidades** --- **Última actualización:** 14 Enero 2025 **Hash:** `gkachele-documentacion-completa-20250114` --- **© 2025 GKACHELE™. Todos los derechos reservados.**