🏗️ ERP Architecture Core
Guía para construir módulos robustos en Yhadr ERP.
1. Arquitectura Modular
Cada funcionalidad principal (Facturación, RRHH, Biblioteca) debe ser un Módulo Autocontenido.
code
/modules/
/Facturacion/
FacturacionModule.jsx (Orquestador)
/components/ (UI interna)
/hooks/ (Lógica local)
/utils/ (Helpers locales)
2. Capa de Servicios (Service Layer)
El UI NUNCA debe hablar directamente con Supabase para lógica compleja. Usa Servicios.
- •
services/facturacionService.js: Encapsula queries, manejo de errores y transformación de datos. - •El componente solo llama:
await facturacionService.crearFactura(datos).
3. Manejo de Estado
- •Local:
useStatepara formularios simples. - •Global/Compartido: Evita Redux si no es vital. Prefiere
useContexto pasar props si la profundidad es < 3 niveles. - •Server State: React Query (si se implementa) o
useEffectcon caché manual en servicios.
4. Patrones de UI (High-End)
- •Skeleton Loading: Nunca mostrar pantallas blancas. Siempre skeletons.
- •Optimistic UI: Actualiza la interfaz ANTES de que el servidor responda (ej: dar like, borrar item).
- •Feedback Loop: Siempre notificar éxito/error con Toasts o Modales.
5. Rendimiento
- •Code Splitting: Usa
React.lazy()para cargar módulos pesados solo cuando se necesitan. - •Memoization:
useMemoyuseCallbacken tablas grandes o listas de items. - •Virtualización: Usa listas virtuales si vas a renderizar > 100 filas (ej: lista de estudiantes).
6. Error Handling
- •Envuelve llamadas críticas en
try/catch. - •Loggea errores en Supabase (
system_logs) si son críticos. - •Muestra mensajes amigables al usuario ("No pudimos guardar" vs "Error 500").