5.9 KiB
5.9 KiB
📖 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/clientessites- Todos los sitios (filtrados poruser_id)menus- Menús dinámicoswidgets- Widgets dinámicoscontent- Contenidosettings- Configuracionesrequests- Solicitudes de publicaciónmedia- Archivos subidos
Acceso a Base de Datos:
- Tu acceso: Panel
/admin(solo roladministrator) - 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 contenidoauthor- Puede crear contenidosubscriber- 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 tablausers) - 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ónupdated_at- Fecha de actualización- Logs del servidor (journalctl)
Posibles Mejoras:
- Tabla
activity_logpara 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:
- Copiar código completo
- Instalar Python3, Nginx
- Copiar configuración
- Cambiar dominio
- Configurar SSL (Let's Encrypt)
- 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
- Implementar limitaciones por plan
- Sistema de actividad/logs
- Mejorar UI del customizer
- Optimizar para VPS
- Añadir más funcionalidades
Última actualización: 14 Enero 2025
Hash: gkachele-documentacion-completa-20250114
© 2025 GKACHELE™. Todos los derechos reservados.