Fuente de verdad del stack tecnologico del Ecosistema IDEA. Toda decision de tecnologia debe pasar por este documento. Cualquier instructivo que mencione una tecnologia debe referenciar aqui.
1. Vision general
El ERP de IDEA no es un software empaquetado (como SAP u Odoo). Es un ecosistema construido a medida usando tecnologias modernas de codigo abierto, conectadas entre si a traves de APIs y una base de datos centralizada.
┌─────────────────────────────────────────────────────┐
│ USUARIO │
│ (navegador web o app movil) │
└──────────────────────┬──────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────┐
│ FRONTEND (Next.js) │
│ Pantallas, formularios, dashboards, reportes │
│ Desplegado en: Vercel o Cloud Run │
└──────────────────────┬──────────────────────────────┘
│ API calls
┌──────────────────────▼──────────────────────────────┐
│ BACKEND (Supabase) │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ Auth │ │ Database │ │ Edge Functions │ │
│ │ (login) │ │(PostgreSQL│ │ (logica negocio) │ │
│ └──────────┘ └──────────┘ └──────────────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ Storage │ │ Realtime │ │ RLS │ │
│ │(archivos)│ │(en vivo) │ │ (seguridad) │ │
│ └──────────┘ └──────────┘ └──────────────────┘ │
└──────────────────────┬──────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────┐
│ INTELIGENCIA ARTIFICIAL │
│ Vertex AI (Google Cloud) │
│ Agentes, chatbots, function calling │
└──────────────────────┬──────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────┐
│ SERVICIOS EXTERNOS │
│ Tellbid (WhatsApp) │ WooCommerce │ Google Drive │
└─────────────────────────────────────────────────────┘
2. Stack completo
| Capa | Tecnologia | Version | Que hace | Por que esta |
|---|---|---|---|---|
| Frontend | Next.js (App Router) | 14+ | Toda la interfaz visual: pantallas, formularios, tablas, dashboards | Framework lider de React. Server Components = mas rapido. SEO nativo |
| Componentes UI | shadcn/ui | latest | Botones, inputs, modales, tablas, tooltips — todos los elementos visuales | Componentes premium, accesibles, personalizables. No es dependencia, se copia al proyecto |
| Estilos | Tailwind CSS | 3.4+ | Todo el CSS del proyecto: colores, espaciados, responsive, dark mode | Utility-first = rapido de escribir, consistente, facil de mantener |
| Auth | Supabase Auth | — | Login, registro, recuperacion de contrasena, OAuth (Google) | Integrado con la DB. Maneja sesiones, tokens, refresh automatico |
| Base de datos | PostgreSQL (via Supabase) | 15+ | Todas las tablas del ERP: usuarios, pedidos, finanzas, academico | SQL maduro, relacional, con Foreign Keys y vistas. Es el estandar |
| Seguridad DB | Row Level Security (RLS) | — | Controla que datos puede ver/editar cada usuario segun su rol | Seguridad a nivel de base de datos. Ni el frontend ni el backend pueden saltarsela |
| API / Backend | Supabase Edge Functions | Deno | Logica de negocio que no puede ir en el frontend: calculos, validaciones, integraciones | Serverless: se ejecuta solo cuando se necesita. Sin servidor propio |
| Tiempo real | Supabase Realtime | — | Actualizaciones en vivo: notificaciones, chat, cambios de datos sin recargar | WebSockets integrados. Ideal para alertas y chat del asistente IA |
| Almacenamiento | Supabase Storage + Google Drive | — | Archivos de usuarios: fotos, documentos, certificados, PDFs | Storage para archivos ligeros. Drive para archivos pesados y compartidos |
| IA | Vertex AI (Google Cloud) | Gemini | Asistente inteligente: chatbot, respuestas, function calling | Modelos Gemini de Google. Escalable, multilenguaje, con tools/functions |
| Mensajeria | Tellbid | — | WhatsApp Business: envio de alertas, chatbot, atencion al cliente | Proveedor local venezolano. Webhook para recibir y responder mensajes |
| E-commerce | WooCommerce | — | Tienda online actual (Aerotienda). Version previa al ERP — sera derogada cuando el modulo Comercial (Nucleo 2) este activo | ⚠️ Sistema legacy pre-ERP. Solo se mantiene durante la transicion |
| Hosting frontend | Vercel o Cloud Run | — | Donde vivira la aplicacion ERP. Deploy automatico desde Git. Aun no desplegado | Vercel = optimizado para Next.js. Cloud Run = mas control. Se define al iniciar Fase 1 |
| Hosting docs | WordPress (cPanel/WHM) | 6.x | Base de conocimiento e instructivos. Version previa al ERP — se mantiene como herramienta de produccion para el disenador del ERP | ⚠️ Sistema pre-ERP. Permanece activo para documentacion interna y publicacion de instructivos |
| Control de codigo | Git | — | Versionado de todo el codigo fuente | Estandar de la industria. Historial, branches, colaboracion |
3. Base de datos: logica y relaciones
3.1 Los 8 Nucleos
La base de datos se organiza en 8 Nucleos (grandes categorias). Cada Nucleo agrupa las tablas relacionadas a un area del negocio. El documento completo esta en la Arquitectura Global de Datos.
| Nucleo | Area | Tabla maestra | Tablas satelite (ejemplos) |
|---|---|---|---|
| 1 | Usuarios y Perfiles | public.profiles |
metadata_instructores, expedientes_inac, historial_academico |
| 2 | Comercial, Marketing, CRM | catalogo_maestro, pedidos |
lista_precios, registro_comisiones, suscripciones |
| 3 | Logistico | activos_fijos |
inventario_consumibles, codigos_barras |
| 4 | Produccion y Operaciones | servicios_activados |
cronogramas, evaluaciones, ordenes_reparacion |
| 5 | Finanzas | compromisos |
cuotas, pagos, cuentas_bancarias |
| 6 | Documental | expedientes |
documentos, certificados, archivos |
| 7 | RRHH | empleados |
nomina, evaluaciones_desempeno, contratos |
| 8 | Soporte e Infraestructura | tickets |
logs_auditoria, configuracion_sistema |
3.2 La Celula Madre
Regla fundamental: La tabla
public.profileses la Celula Madre del ERP. Ninguna tabla en ningun Nucleo puede referenciar a una persona sin que esa persona exista primero en profiles. Si cambias un dato aqui, se refleja en todos los modulos automaticamente.
3.3 Como se relacionan las tablas
Las tablas se conectan con Foreign Keys (llaves foraneas). Es el equivalente a los «Linked Records» de Airtable, pero mas potente:
| Concepto | En Airtable | En Supabase (PostgreSQL) | Ejemplo |
|---|---|---|---|
| Conexion entre tablas | Linked Record | Foreign Key (FK) | pedidos.user_id → profiles.id |
| Ver datos filtrados | View | Vista SQL + RLS | «Solo ver MIS pedidos» |
| Dato calculado | Formula field | Computed column / View | Total de deuda = SUM(cuotas pendientes) |
| Tabla contenedora | Base / Workspace | Schema (public) | Todas las tablas viven en «public» |
| Seguridad | Share view / Restricted | RLS policies | «Un alumno solo ve SUS datos» |
3.4 Diagrama de relaciones central
┌─────────────────┐
│ public.profiles │ ◄── CELULA MADRE
│ (Nucleo 1) │
└────────┬─────────┘
│
┌───────────┬───────────┼───────────┬───────────┐
│ │ │ │ │
┌─────▼─────┐ ┌───▼───┐ ┌────▼────┐ ┌────▼────┐ ┌───▼────┐
│ pedidos │ │cuotas │ │expedient│ │cronogram│ │tickets │
│(Nucleo 2) │ │(Nuc 5)│ │(Nuc 6) │ │(Nuc 4) │ │(Nuc 8) │
└─────┬─────┘ └───┬───┘ └────┬────┘ └────┬────┘ └────────┘
│ │ │ │
┌─────▼─────┐ ┌───▼───┐ ┌───▼────┐ ┌────▼─────┐
│ catalogo │ │ pagos │ │ docs │ │evaluacion│
│ maestro │ │ │ │ archiv │ │ notas │
└───────────┘ └───────┘ └────────┘ └──────────┘
Regla: Todas las flechas siempre apuntan a profiles. Un pedido tiene un user_id, una cuota tiene un user_id, un expediente tiene un user_id. Profiles es el centro de todo.
3.5 Row Level Security (RLS)
RLS es el sistema de seguridad de la base de datos. Funciona asi:
| Regla | Que significa | Ejemplo |
|---|---|---|
| SELECT (leer) | Quien puede VER los datos | Un alumno solo ve SUS notas. Un coordinador ve las de SU grupo |
| INSERT (crear) | Quien puede AGREGAR datos | Solo RRHH puede crear empleados. Solo Admin puede crear proveedores |
| UPDATE (editar) | Quien puede MODIFICAR datos | Un alumno puede editar su foto y telefono, pero NO su cedula |
| DELETE (borrar) | Quien puede ELIMINAR datos | Nadie borra. Se marca como «Inactivo». Los datos se preservan siempre |
4. Estructura del codigo fuente
Todo el codigo vive en F:\Ecosistema ERP\web\. Estructura documentada en el Instructivo de Estructura Frontend:
web/ ├── src/ │ ├── app/ ← Paginas (cada carpeta = una URL) │ │ ├── page.tsx ← Login │ │ ├── dashboard/ ← Mi Panel │ │ ├── perfil/ ← Mi Perfil │ │ ├── finanzas/ ← Mis Finanzas │ │ ├── academico/ ← Mi Academico │ │ └── ... │ ├── components/ ← Piezas reutilizables (botones, cards, tablas) │ ├── lib/ │ │ ├── supabaseClient.ts ← Conexion a la base de datos │ │ ├── vertexAi.ts ← Conexion a la IA │ │ └── driveSync.ts ← Subida de archivos a Drive │ └── styles/ ← Estilos globales ├── public/ ← Imagenes, logos, iconos └── package.json ← Dependencias del proyecto
5. Referencia cruzada
| Documento | Relacion con este |
|---|---|
| Arquitectura Global de Datos | Detalle de los 8 Nucleos y todas las tablas |
| Estructura Frontend (Next.js) | Estructura de carpetas del codigo |
| Instructivo Maestro de Usuarios | Normas del Nucleo 1 (profiles) |
| Estructura General del ERP | Vision macro del ecosistema |
| Agentes Inteligentes | Vertex AI, function calling |
| Config WordPress para Antigravity | Publicacion de docs desde el agente |

