Skip to main content

arquitectura-dashboard-datos-api

Arquitectura completa de un dashboard web que consume APIs de datos externas. Patrón inspirado en ESIOS Dashboard — estructura de 5 capas: config, infra, dominio, shared, presentación.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
Ntizar/NtizarBrainMasterMind
آخر نشاط في المصدر
٢٦ يونيو ٢٠٢٦ في ١٢:٠٥
لغة SKILL.md المكتشفة
الإسبانية
النجوم
٢
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
arquitectura-dashboard-datos-api
description
Arquitectura completa de un dashboard web que consume APIs de datos externas. Patrón inspirado en ESIOS Dashboard — estructura de 5 capas: config, infra, dominio, shared, presentación.
version
1.1.0
author
Ntizar
references
[{"references/esios-project-structure.md - Proyecto ESIOS de referencia":"estructura real, arquitectura en capas, tabla de patrones extraídos y métricas (24.469 líneas, 41 archivos)"}]
license
MIT
metadata
{"hermes":{"tags":["arquitectura","dashboard","api","patron","esios"],"related_skills":["api-cliente-http-robusto","cache-multicapa-memoria-disco","fetch-paralelo-fallos-parciales","servicio-resumen-consolidado"]}}
# Arquitectura Dashboard con Datos de APIs Externas Patrón validado en el proyecto ESIOS Dashboard (24.469 líneas, Node.js + HTML vanilla + Chart.js). ## Flujo completo del dato ``` API externa (ESIOS/REE) │ ▼ [Cliente HTTP] → reintentos, backoff, jitter │ ├──► [Cache Disco] → persiste respuestas (TTL) │ ▼ [Servicio Dominio] → normalización, conversión unidades, merge │ ├──► [Cache Memoria] → LRU con métricas (hits/misses) │ ▼ [API REST] → /api/v1/summary, /api/v1/indicator, /healthz, /readyz │ ▼ [Frontend Vanilla] → state.js → data.js → api.js → render*.js ``` ## Principios clave ### 1. Capa de cliente API independiente - Un solo módulo `clients/api.client.js` que maneja HTTP, reintentos, tokens - NUNCA mezclar lógica de negocio con fetch - Siempre cachear antes de retornar ### 2. Cache multicapa defensiva - **Capa 1 (memoria)**: responde en <1ms, ideal para requests repetidos en misma sesión - **Capa 2 (disco)**: persiste entre reinicios, reduce peticiones a la API externa - Ambas con TTL configurable y mecanismo de limpieza ### 3. Dominio separado de infraestructura - `src/domains/` → lógica de negocio (resumen, forecast, agregación) - `src/infra/` → caché, clientes HTTP, repositorios - `src/shared/` → utilidades transversales (timezones, unidades) - `src/config/` → validación de entorno ### 4. Frontend sin framework, con estado centralizado - `AppState` global → única fuente de verdad - Persistencia en URL hash + localStorage - Carga orquestada desde `data.js`, render delegado a módulos especializados ### 5. Contrato API estable - Endpoints con nombres en español - Estructura de respuesta documentada en README - versionado semántico en los datos ## Cuándo aplicar este patrón - Dashboards con datos de APIs externas (1 o múltiples fuentes) - Proyectos que necesitan forecast/análisis sobre datos históricos - Cuando quieres cache agresiva para no malgastar créditos de API - Cuando necesitas que funcione sin frameworks pesados (vanilla JS) ## Anti-patrones que evitar - ❌ Llamar a la API externa desde el frontend (expone tokens) - ❌ Mezclar lógica de cache con lógica de negocio - ❌ No validar fechas/timezones (todo dashboard tiene fechas) - ❌ Un solo punto de fallo en el fetch paralelo (usar Promise.allSettled + fetchIndicatorSafe) ## Referencia - Proyecto ESIOS Dashboard: github.com/Ntizar/esios-dashboard - Skills relacionadas: api-cliente-http-robusto, cache-multicapa-memoria-disco, fetch-paralelo-fallos-parciales, servicio-resumen-consolidado
عرض على GitHub