- Arquitectura paralela para Guías de Refuerzo - Nuevos componentes: GuideCard, GuideHeader, GuideNavigation, etc. - Vistas formativas: GuideIndex, GuideViewer, GuideSectionViewer - Layout específico GuideLayout (sin BottomNav) - Índice de guías con ABCDE Operativo y RCP Adulto SVB - Corrección de Service Worker para desarrollo - Enlaces de navegación en menú y página principal - Documentación completa de implementación
28 KiB
Análisis de Estructura Frontend - EMERGES TES
Análisis Técnico y Arquitectónico para Preparación de Rediseño
1️⃣ Análisis de Estructura del Proyecto
1.1 Estructura de Carpetas Principal
guia-tes/
├── src/ # Código fuente principal
│ ├── components/ # Componentes React organizados por dominio
│ │ ├── layout/ # Componentes de estructura visual (Header, Footer, BottomNav)
│ │ ├── ui/ # Componentes base de shadcn/ui (51 componentes)
│ │ ├── content/ # Visualizadores de contenido (MarkdownViewer)
│ │ ├── manual/ # Específico para manual
│ │ ├── tools/ # Calculadoras y herramientas (10 componentes)
│ │ ├── drugs/ # Componentes de fármacos (4 componentes)
│ │ ├── procedures/ # Procedimientos
│ │ ├── decision-trees/ # Árboles de decisión
│ │ ├── communication-scripts/ # Guiones de comunicación
│ │ ├── telephone-protocols/ # Protocolos transtelefónicos
│ │ ├── material-checklists/ # Checklists de material
│ │ ├── references/ # Referencias (terminología)
│ │ └── shared/ # Componentes compartidos (Badge, EmergencyButton)
│ │
│ ├── pages/ # Páginas/Views principales (24 archivos)
│ │ ├── Index.tsx # Página principal (Home)
│ │ ├── ManualIndex.tsx # Índice del manual
│ │ ├── ManualViewer.tsx # Visualizador de capítulos del manual
│ │ ├── RCP.tsx # Página de RCP
│ │ ├── Ictus.tsx # Página de Ictus
│ │ ├── Shock.tsx # Página de Shock
│ │ ├── ViaAerea.tsx # Página de Vía Aérea
│ │ └── [otros 17 archivos] # Otras páginas funcionales
│ │
│ ├── data/ # Datos estructurados y configuración
│ │ ├── manual-index.ts # Índice completo del manual (estructura jerárquica)
│ │ ├── guia-refuerzo-rcp-adulto-svb.json # Ejemplo de guía de refuerzo en JSON
│ │ ├── drugs.ts # Datos de fármacos
│ │ ├── procedures.ts # Procedimientos
│ │ ├── calculators.ts # Configuración de calculadoras
│ │ ├── image-registry.ts # Registro de imágenes con alias
│ │ └── [otros archivos de datos]
│ │
│ ├── hooks/ # Custom hooks (6 hooks)
│ │ ├── useFavorites.ts # Gestión de favoritos
│ │ ├── useSearchHistory.ts # Historial de búsquedas
│ │ ├── usePWAInstall.ts # Instalación PWA
│ │ ├── useServiceWorker.ts # Service Worker
│ │ └── [otros hooks]
│ │
│ ├── utils/ # Utilidades
│ │ └── markdownUtils.ts # Procesamiento de Markdown
│ │
│ ├── lib/ # Librerías y configuraciones
│ │ └── utils.ts # Utilidades generales (cn, etc.)
│ │
│ ├── App.tsx # Componente raíz y configuración de rutas
│ ├── main.tsx # Punto de entrada
│ ├── index.css # Estilos globales y variables CSS
│ └── App.css # Estilos específicos de App (mínimo)
│
├── public/ # Archivos estáticos servidos directamente
│ ├── manual/ # Archivos Markdown del manual (92 archivos .md)
│ │ └── [estructura por bloques]
│ ├── assets/ # Recursos estáticos
│ │ ├── infografias/ # Infografías (48 archivos PNG/SVG)
│ │ └── diagramas/ # Diagramas
│ ├── sw.js # Service Worker
│ ├── manifest.json # PWA Manifest
│ └── [otros archivos estáticos]
│
├── docs/ # Documentación
│ └── consolidado/ # Guías de refuerzo en Markdown (103 archivos)
│ └── [SECCION_XX_NOMBRE.md]
│
├── dist/ # Build de producción (generado)
├── node_modules/ # Dependencias
└── [archivos de configuración]
1.2 Layout Principal
Ubicación del Layout:
- Archivo principal:
src/App.tsx(líneas 62-121) - Componentes de layout:
src/components/layout/
Estructura Visual Actual:
┌─────────────────────────────────────┐
│ Header (fixed, top-0, z-50) │ ← src/components/layout/Header.tsx
│ - Logo TES │
│ - Estado online/offline │
│ - Botón búsqueda │
│ - Botón menú │
├─────────────────────────────────────┤
│ │
│ Main Content (pt-14 pb-safe) │ ← Contenedor principal
│ ┌───────────────────────────────┐ │
│ │ Container (max-w-2xl) │ │ ← Ancho máximo centrado
│ │ └── Routes (Suspense) │ │ ← React Router
│ │ └── [Páginas lazy-loaded] │ │
│ └───────────────────────────────┘ │
│ │
├─────────────────────────────────────┤
│ BottomNav (fixed, bottom-0, z-50) │ ← src/components/layout/BottomNav.tsx
│ - Home, Soporte, Patologías, etc. │
├─────────────────────────────────────┤
│ Footer (hidden md:block) │ ← src/components/layout/Footer.tsx
└─────────────────────────────────────┘
Componentes de Layout:
- Header.tsx - Barra superior fija con navegación y acciones
- BottomNav.tsx - Navegación inferior fija (mobile-first)
- Footer.tsx - Pie de página (solo desktop)
- MenuSheet.tsx - Menú lateral deslizable (Sheet component)
- SearchModal.tsx - Modal de búsqueda
- InstallBanner.tsx - Banner de instalación PWA
- UpdateNotification.tsx - Notificación de actualizaciones
1.3 Gestión de Vistas/Pantallas
Sistema de Rutas:
- Framework: React Router v6.30.1
- Configuración:
src/App.tsx(líneas 60-100) - Estrategia: Lazy loading para todas las páginas excepto Home y NotFound
Estructura de Rutas:
/ → Index.tsx (Home) - Carga inmediata
/manual → ManualIndex.tsx - Índice del manual
/manual/:parte/:bloque/:capitulo → ManualViewer.tsx - Visualizador de capítulos
/rcp → RCP.tsx
/ictus → Ictus.tsx
/shock → Shock.tsx
/via-aerea → ViaAerea.tsx
/soporte-vital → SoporteVital.tsx
[+ 18 rutas más]
Lazy Loading:
- Todas las páginas excepto Home y NotFound se cargan bajo demanda
- Usa
React.lazy()ySuspenseconPageLoadercomo fallback - Code splitting automático por Vite (ver
vite.config.ts)
1.4 Separación de Responsabilidades
✅ Separación Existente:
-
Lógica de Negocio:
src/data/- Datos estructurados y configuraciónsrc/hooks/- Lógica reutilizable (favoritos, historial, PWA)src/utils/- Utilidades puras (markdown, etc.)
-
Presentación Visual:
src/components/ui/- Componentes base (shadcn/ui)src/components/layout/- Estructura visualsrc/components/[domain]/- Componentes específicos por dominiosrc/pages/- Vistas/pantallas completas
-
Contenido:
public/manual/- Archivos Markdown del manual operativodocs/consolidado/- Guías de refuerzo en Markdownpublic/assets/- Imágenes e infografíassrc/data/- Metadatos y estructuras de datos
⚠️ Acoplamientos Detectados:
ManualViewer.tsxdepende directamente demanual-index.ts(estructura de datos)MarkdownViewer.tsxtiene lógica de procesamiento de imágenes mezclada con presentación- Algunos componentes de
ui/tienen estilos hardcodeados en lugar de usar variables CSS
2️⃣ Análisis de la Visualización Actual
2.1 Construcción de la Interfaz
Arquitectura Visual:
- Framework CSS: Tailwind CSS 3.4 con sistema de diseño personalizado
- Componentes UI: shadcn/ui (51 componentes basados en Radix UI)
- Tema: Dark mode por defecto, optimizado para uso nocturno en ambulancia
- Responsive: Mobile-first, con breakpoints estándar de Tailwind
Layout General:
┌─────────────────────────────────────────┐
│ Header (fixed, h-14) │
├─────────────────────────────────────────┤
│ Main (pt-14 pb-safe) │
│ ┌─────────────────────────────────────┐ │
│ │ Container (max-w-2xl, mx-auto) │ │ ← Ancho máximo 672px
│ │ └── Contenido de página │ │
│ └─────────────────────────────────────┘ │
├─────────────────────────────────────────┤
│ BottomNav (fixed, h-16) │
└─────────────────────────────────────────┘
Características del Layout:
- Ancho máximo:
max-w-2xl(672px) - Diseño centrado, legible - Padding superior:
pt-14- Compensación para Header fijo - Padding inferior:
pb-safe- Compensación para BottomNav + safe area - Contenedor: Centrado con
mx-auto
2.2 Componentes Visuales Existentes
Componentes Base (shadcn/ui):
- Navegación: Button, NavLink, Breadcrumb, Tabs
- Contenedores: Card, Sheet, Dialog, Drawer, Accordion
- Formularios: Input, Select, Checkbox, Radio, Switch, Slider
- Feedback: Toast, Alert, Progress, Skeleton
- Datos: Table, Pagination
- Otros: Tooltip, Popover, HoverCard, Command
Componentes de Dominio:
- EmergencyButton - Botones de emergencia con variantes (critical, high, medium, low)
- Badge - Badges con variantes de prioridad
- MarkdownViewer - Renderizador de Markdown con estilos personalizados
- DrugCard - Tarjetas de fármacos
- ProcedureCard - Tarjetas de procedimientos
- Calculadoras (10 componentes) - Herramientas interactivas
Componentes de Layout:
- Header - Barra superior con estado online/offline
- BottomNav - Navegación inferior con 6 items principales
- MenuSheet - Menú lateral deslizable
- SearchModal - Modal de búsqueda global
- Footer - Pie de página minimalista
2.3 Renderizado de Contenido
Markdown:
- Componente:
src/components/content/MarkdownViewer.tsx - Librería: react-markdown 10.1.0
- Plugins:
remark-gfm- GitHub Flavored Markdownremark-frontmatter- Soporte para front matterrehype-raw- HTML crudorehype-sanitize- Sanitización de seguridadrehype-highlight- Syntax highlighting
Carga de Archivos:
- Estrategia: Fetch dinámico desde
public/manual/ - Rutas: Normalizadas para empezar con
/ - Estados: Loading, Error, Empty
- Imágenes: Sistema de registro con alias (
image-registry.ts)
Estilos de Markdown:
- Plugin:
@tailwindcss/typography(prose classes) - Clase base:
prose prose-slate dark:prose-invert max-w-none - Personalización: Componentes customizados para cada elemento HTML
Guías de Refuerzo:
- Formato actual: Markdown en
docs/consolidado/ - Estructura: 8 secciones por guía (SECCION_01 a SECCION_08)
- Visualización: NO implementada actualmente en la app
- Datos JSON: Existe ejemplo en
src/data/guia-refuerzo-rcp-adulto-svb.json
2.4 Rigidez vs Flexibilidad
✅ Partes Fáciles de Modificar:
-
Estilos Globales:
src/index.css- Variables CSS centralizadastailwind.config.ts- Configuración de tema y colores- Variables CSS permiten cambios de tema sin tocar componentes
-
Componentes UI Base:
src/components/ui/- Componentes de shadcn/ui- Modificables individualmente sin afectar otros
- Estilos mediante clases Tailwind, fácil de personalizar
-
Componentes de Dominio:
src/components/[domain]/- Componentes específicos- Aislados por dominio, modificables sin impacto global
-
Contenido:
public/manual/- Archivos Markdown independientesdocs/consolidado/- Guías de refuerzo independientes- Cambios de contenido no requieren cambios de código
⚠️ Partes Rígidas (Requieren Cuidado):
-
Layout Principal:
src/App.tsx- Estructura fija con Header/BottomNav/Footer- Cambios requieren modificar el componente raíz
- Afecta todas las páginas
-
Sistema de Rutas:
src/App.tsx(líneas 71-99) - Rutas hardcodeadas- Agregar nuevas rutas requiere modificar App.tsx
- No hay sistema de rutas dinámicas
-
MarkdownViewer:
src/components/content/MarkdownViewer.tsx- Lógica de renderizado mezclada- Procesamiento de imágenes integrado en el componente
- Difícil de extender sin modificar el componente base
-
Estructura de Datos:
src/data/manual-index.ts- Estructura jerárquica fija- Tipos TypeScript estrictos
- Cambios requieren actualizar tipos y datos
2.5 Tipo de Diseño
Arquitectura de Diseño:
- Tipo: Híbrido (Componentes + Rutas)
- Base: Componentes reutilizables (shadcn/ui)
- Estructura: Basada en rutas/páginas (React Router)
- Estilos: Utility-first (Tailwind CSS)
Características:
- ✅ Componentes reutilizables: shadcn/ui proporciona base sólida
- ✅ Rutas/páginas: Cada funcionalidad tiene su página dedicada
- ⚠️ Monolítico parcial: Layout principal está acoplado en App.tsx
- ✅ Flexibilidad: Componentes individuales son modulares
3️⃣ Identificación de Puntos Críticos
3.1 Archivos/Carpetas NO Tocar Sin Copia
🔴 CRÍTICOS (Riesgo Alto):
-
src/App.tsx- Razón: Componente raíz, estructura de layout, rutas principales
- Riesgo: Cualquier cambio puede romper toda la aplicación
- Dependencias: Header, BottomNav, Footer, Routes, Providers
-
src/components/layout/Header.tsx- Razón: Navegación principal, estado online/offline, búsqueda
- Riesgo: Cambios afectan todas las páginas
- Dependencias: App.tsx, SearchModal, MenuSheet
-
src/components/layout/BottomNav.tsx- Razón: Navegación inferior, visible en todas las páginas
- Riesgo: Cambios afectan UX global
- Dependencias: React Router NavLink
-
src/data/manual-index.ts- Razón: Estructura de datos del manual, tipos TypeScript
- Riesgo: Cambios pueden romper ManualIndex y ManualViewer
- Dependencias: ManualIndex.tsx, ManualViewer.tsx
-
src/components/content/MarkdownViewer.tsx- Razón: Renderizado de todo el contenido Markdown
- Riesgo: Cambios afectan visualización de manual y guías
- Dependencias: Todas las páginas que muestran Markdown
-
tailwind.config.ts- Razón: Configuración de tema, colores, tipografía
- Riesgo: Cambios afectan estilos globales
- Dependencias: Todos los componentes
-
src/index.css- Razón: Variables CSS, estilos base, clases utilitarias
- Riesgo: Cambios afectan apariencia global
- Dependencias: Todo el sistema visual
🟡 IMPORTANTES (Riesgo Medio):
-
src/components/ui/(cualquier componente)- Razón: Componentes base usados en toda la app
- Riesgo: Cambios pueden afectar múltiples páginas
- Mitigación: Cambios menores son seguros, refactors grandes requieren cuidado
-
vite.config.ts- Razón: Configuración de build, code splitting, rutas de assets
- Riesgo: Cambios pueden romper el build o rutas de assets
- Dependencias: Sistema de build completo
-
public/manual/(estructura de carpetas)- Razón: Archivos Markdown referenciados por manual-index.ts
- Riesgo: Cambios de estructura requieren actualizar manual-index.ts
- Dependencias: manual-index.ts, ManualViewer.tsx
3.2 Dependencias Visuales Importantes
Jerarquía de Dependencias:
App.tsx
├── ThemeProvider (next-themes)
│ └── Variables CSS (index.css)
│ └── tailwind.config.ts
│
├── Layout Components
│ ├── Header.tsx
│ │ ├── Button (ui/button)
│ │ └── SearchModal, MenuSheet
│ │
│ ├── BottomNav.tsx
│ │ └── NavLink (react-router)
│ │
│ └── Footer.tsx
│
└── Pages
├── ManualViewer.tsx
│ ├── MarkdownViewer
│ │ ├── react-markdown
│ │ ├── prose (tailwind-typography)
│ │ └── image-registry.ts
│ └── manual-index.ts
│
└── [Otras páginas]
└── Componentes UI base
Variables CSS Críticas:
--background,--foreground- Colores base--primary,--primary-foreground- Color principal (rojo emergencia)--emergency-critical,--emergency-high, etc. - Colores de emergencia--radius- Border radius global- Variables de sidebar (aunque no se usa actualmente)
3.3 Riesgos Potenciales
Si se Modifica el Layout Directamente:
-
Riesgo de Romper Responsive:
- Header y BottomNav son fixed
- Cambios en padding/margin pueden solapar contenido
- Safe area insets pueden verse afectados
-
Riesgo de Romper Navegación:
- BottomNav usa React Router NavLink
- Cambios en rutas pueden romper navegación
- Header tiene botón de retroceso que depende de history
-
Riesgo de Romper PWA:
- Layout optimizado para PWA (safe areas, touch targets)
- Cambios pueden afectar instalación o uso offline
-
Riesgo de Romper Accesibilidad:
- Focus states, ARIA labels, touch targets
- Cambios pueden afectar usabilidad con guantes
-
Riesgo de Romper Tema:
- Dark mode por defecto optimizado para uso nocturno
- Cambios pueden afectar legibilidad en ambulancias
3.4 Acoplamientos Fuertes
Acoplamientos Detectados:
-
App.tsx ↔ Layout Components:
- App.tsx importa directamente Header, BottomNav, Footer
- Cambios en layout requieren modificar App.tsx
- Solución potencial: Layout component wrapper
-
ManualViewer ↔ manual-index.ts:
- ManualViewer depende de estructura fija de manual-index.ts
- Cambios en estructura requieren actualizar ambos
- Solución potencial: Abstracción de datos
-
MarkdownViewer ↔ image-registry.ts:
- Lógica de imágenes mezclada en MarkdownViewer
- Cambios en sistema de imágenes requieren modificar MarkdownViewer
- Solución potencial: Hook o utilidad separada
-
Pages ↔ Components:
- Páginas importan componentes directamente
- No hay capa de abstracción
- Impacto: Bajo, pero limita reutilización
4️⃣ Propuesta de Copia Segura
4.1 Estrategia de Copia
Comando Recomendado:
# Desde el directorio padre de guia-tes
cd /home/planetazuzu
cp -r guia-tes guia-tes-ui-experimental
Alternativa con rsync (más control):
rsync -av --exclude='node_modules' \
--exclude='dist' \
--exclude='.git' \
--exclude='logs' \
--exclude='*.log' \
guia-tes/ guia-tes-ui-experimental/
4.2 Nombre Recomendado
Opción 1 (Recomendada): guia-tes-ui-experimental
- Ventajas: Claro que es experimental, indica que es para UI
- Uso: Desarrollo de nuevas visualizaciones sin riesgo
Otras opciones:
guia-tes-v2- Si es una versión completaguia-tes-visual-lab- Si es un laboratorio de diseñoguia-tes-refactor- Si es un refactor completo
4.3 Archivos/Carpetas a Excluir
Excluir de la Copia:
-
node_modules/- Razón: Se regenera con
npm install - Tamaño: Muy grande, innecesario
- Razón: Se regenera con
-
dist/- Razón: Build de producción, se regenera
- Tamaño: Grande, innecesario
-
.git/- Razón: Historial de git (opcional, según preferencia)
- Alternativa: Si quieres historial, mantenerlo
-
logs/- Razón: Logs de PM2, se regeneran
- Tamaño: Pequeño pero innecesario
-
*.log- Razón: Archivos de log temporales
Mantener en la Copia:
- ✅ Todo
src/- Código fuente - ✅ Todo
public/- Archivos estáticos - ✅ Todo
docs/- Documentación y guías - ✅
package.json,package-lock.json- Dependencias - ✅
tailwind.config.ts,vite.config.ts- Configuraciones - ✅
tsconfig.json- Configuración TypeScript - ✅
.gitignore- Si se va a versionar
4.4 Buenas Prácticas para Trabajo en Paralelo
1. Gestión de Dependencias:
# En la copia experimental
cd guia-tes-ui-experimental
npm install # Regenerar node_modules
2. Puerto de Desarrollo Diferente:
Modificar vite.config.ts en la copia:
server: {
port: 8097, // Cambiar de 8096 a 8097
}
3. Variables de Entorno:
Crear .env.local en la copia con configuración diferente si es necesario.
4. Git (Opcional):
cd guia-tes-ui-experimental
git init
git add .
git commit -m "Initial experimental copy"
# Crear rama experimental
git checkout -b ui-redesign
5. Scripts de Desarrollo:
Mantener scripts de package.json iguales, pero ejecutar en directorio diferente.
6. Testing de Cambios:
- Probar cambios en la copia experimental
- Comparar visualmente con la original
- Validar que no se rompe funcionalidad existente
7. Integración Gradual:
- Cambios pequeños y probados se pueden portar a la original
- Mantener ambas versiones hasta validación completa
5️⃣ Preparación para Rediseño Futuro
5.1 Estructura Ideal para Nueva Visualización
Arquitectura Recomendada:
src/
├── layouts/ # NUEVO: Layouts alternativos
│ ├── DefaultLayout.tsx # Layout actual (Header + BottomNav)
│ ├── GuideLayout.tsx # Layout para guías de refuerzo
│ ├── OperationalLayout.tsx # Layout para protocolos operativos
│ └── MinimalLayout.tsx # Layout minimalista
│
├── views/ # NUEVO: Vistas por modo
│ ├── formativo/ # Vistas de modo formativo
│ │ ├── GuideViewer.tsx # Visualizador de guías
│ │ └── GuideIndex.tsx # Índice de guías
│ │
│ └── operativo/ # Vistas de modo operativo
│ ├── ProtocolViewer.tsx # Visualizador de protocolos
│ └── ProtocolIndex.tsx # Índice de protocolos
│
├── components/
│ ├── guide/ # NUEVO: Componentes específicos de guías
│ │ ├── GuideSection.tsx # Sección de guía
│ │ ├── GuideBlock.tsx # Bloque de contenido
│ │ ├── GuideVisual.tsx # Visualizador de infografías
│ │ └── GuideNavigation.tsx # Navegación entre secciones
│ │
│ └── [mantener estructura actual]
│
└── [resto de estructura actual]
Sistema de Modos:
// src/contexts/ViewModeContext.tsx (NUEVO)
type ViewMode = 'formativo' | 'operativo' | 'auto';
interface ViewModeContext {
mode: ViewMode;
setMode: (mode: ViewMode) => void;
isFormative: boolean;
isOperational: boolean;
}
5.2 Capacidades Actuales de la App
✅ Permite Capa Visual Alternativa:
- Sistema de temas: next-themes ya implementado
- Componentes modulares: shadcn/ui permite variantes
- CSS variables: Sistema de variables permite temas alternativos
- Tailwind: Utility classes permiten variaciones rápidas
✅ Permite Nuevo Layout:
- React Router: Permite layouts por ruta
- Componentes aislados: Layout components son independientes
- Estructura flexible: App.tsx puede envolver diferentes layouts
⚠️ Limitaciones Actuales:
- Layout único: App.tsx tiene un solo layout hardcodeado
- Sin sistema de modos: No hay diferenciación formativo/operativo
- Rutas fijas: No hay rutas dinámicas para guías de refuerzo
- MarkdownViewer único: Un solo componente para todo el Markdown
5.3 Información Adicional Necesaria
Antes de Empezar el Rediseño, Necesitamos:
-
Requisitos de Usuario:
- ¿Cómo debe diferenciarse visualmente "Modo Formación" vs "Modo Operativo"?
- ¿Qué elementos visuales son críticos para cada modo?
- ¿Hay preferencias de layout (sidebar, tabs, accordion)?
-
Estructura de Contenido:
- ¿Cómo se accederá a las guías de refuerzo? (ruta, menú, búsqueda)
- ¿Las guías tendrán navegación entre secciones?
- ¿Habrá índice de guías o solo acceso directo?
-
Diseño Visual:
- ¿Paleta de colores diferente para modo formativo?
- ¿Tipografía diferente?
- ¿Espaciado y densidad de información diferente?
-
Funcionalidades:
- ¿Las guías tendrán interactividad? (simulaciones, quizzes)
- ¿Habrá progreso de lectura?
- ¿Favoritos específicos para guías?
-
Rendimiento:
- ¿Cuántas guías habrá aproximadamente?
- ¿Se cargarán todas o bajo demanda?
- ¿Necesitan búsqueda específica?
-
Compatibilidad:
- ¿Debe funcionar offline? (PWA)
- ¿Compatibilidad con navegadores específicos?
- ¿Restricciones de tamaño de bundle?
5.4 Recomendaciones para el Rediseño
Estrategia Recomendada:
-
Fase 1 - Preparación:
- Crear copia segura
- Documentar estructura actual (este documento)
- Definir requisitos de diseño
-
Fase 2 - Infraestructura:
- Crear sistema de modos (contexto React)
- Crear layouts alternativos
- Crear rutas para guías de refuerzo
-
Fase 3 - Componentes:
- Crear componentes específicos de guías
- Extender MarkdownViewer o crear GuideViewer
- Implementar navegación entre secciones
-
Fase 4 - Integración:
- Integrar guías en el sistema de rutas
- Conectar con sistema de búsqueda
- Añadir a menús y navegación
-
Fase 5 - Refinamiento:
- Ajustar estilos y UX
- Optimizar rendimiento
- Testing completo
Principios de Diseño:
- ✅ No romper funcionalidad existente
- ✅ Mantener compatibilidad con PWA
- ✅ Preservar accesibilidad y usabilidad con guantes
- ✅ Mantener rendimiento (lazy loading, code splitting)
- ✅ Separar concerns (lógica, presentación, datos)
Resumen Ejecutivo
Estado Actual
- ✅ Arquitectura sólida: React + TypeScript + Tailwind + shadcn/ui
- ✅ Separación de concerns: Lógica, presentación y contenido separados
- ✅ Componentes modulares: Base reutilizable con shadcn/ui
- ⚠️ Layout acoplado: App.tsx tiene estructura fija
- ⚠️ Sin sistema de modos: No hay diferenciación formativo/operativo
- ❌ Guías no implementadas: Existen archivos pero no hay visualización
Puntos Críticos
- App.tsx - Componente raíz, NO tocar sin copia
- Layout components - Estructura visual global
- manual-index.ts - Estructura de datos crítica
- MarkdownViewer - Renderizado de contenido
- tailwind.config.ts - Sistema de diseño
Próximos Pasos Recomendados
- ✅ Crear copia segura:
guia-tes-ui-experimental - ✅ Documentar requisitos: Definir diseño de guías de refuerzo
- ⏳ Diseñar arquitectura: Sistema de modos y layouts
- ⏳ Implementar gradualmente: Sin romper funcionalidad existente
Documento generado: Análisis completo de estructura frontend Fecha: 2025-01-XX Estado: Listo para iniciar rediseño con seguridad