Modularización de GKACHELE SaaS
This commit is contained in:
218
memoria/DOCUMENTACION_PROYECTO.md
Normal file
218
memoria/DOCUMENTACION_PROYECTO.md
Normal file
@@ -0,0 +1,218 @@
|
||||
# 📖 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.**
|
||||
Reference in New Issue
Block a user