Saltearse al contenido

Descripción General del Dashboard Frontend

Descripción General del Dashboard Frontend

Versión: 1.0 Fecha: 2025-11-19 Proyecto: Algesta Dashboard React

Tabla de Contenidos

  1. Resumen Ejecutivo
  2. Descripción General de Arquitectura
  3. Catálogo de Módulos de Funcionalidad
  4. Stack Tecnológico
  5. Principios de Arquitectura
  6. Referencias Cruzadas
  7. Inicio Rápido

Resumen Ejecutivo

El Dashboard React de Algesta es una aplicación web integral que proporciona una interfaz completa para gestionar órdenes, subastas, proveedores, activos, clientes y operaciones comerciales. El dashboard sirve a múltiples roles de usuario (Admin, Agente, Proveedor, Cliente) con experiencias y capacidades adaptadas para cada rol.

Estadísticas Clave:

  • 11 módulos de funcionalidad que cubren el dominio completo del negocio
  • Más de 50 componentes UI reutilizables basados en shadcn/ui
  • Más de 40 rutas con control de acceso basado en roles
  • 4 roles de usuario con capacidades distintas
  • Stack tecnológico moderno (React 19, TypeScript 5.8, Vite 6, Tailwind CSS 4)

Propósito: El dashboard proporciona una interfaz unificada para que todos los interesados de la plataforma gestionen el ciclo de vida completo de órdenes de mantenimiento y reparación, desde la creación hasta la subasta, asignación de proveedor, ejecución del trabajo y finalización.

Descripción General de Arquitectura

Patrón Bulletproof React

La aplicación sigue el patrón de arquitectura Bulletproof React, que enfatiza:

  • Organización basada en funcionalidades
  • Clara separación de responsabilidades
  • Escalabilidad y mantenibilidad
  • Seguridad de tipos con TypeScript
  • Testeabilidad

Estructura de Directorios

src/
├── features/ # Módulos de funcionalidades (11 módulos)
│ ├── auth/ # Autenticación
│ ├── orders/ # Gestión de órdenes
│ ├── marketplace/ # Subastas y marketplace
│ ├── providers/ # Funcionalidad de proveedores
│ ├── assets/ # Gestión de activos
│ ├── clients/ # Funcionalidad de clientes
│ ├── users/ # Gestión de usuarios
│ ├── dashboard/ # KPIs y métricas
│ ├── contracts-policies/ # Gestión de contratos
│ ├── accountants/ # Contabilidad
│ └── monitoring-panel/ # Monitoreo de mensajes
├── components/ui/ # Componentes UI compartidos (50+ componentes)
│ ├── button.tsx
│ ├── form.tsx
│ ├── data-table-server.tsx
│ └── ...
├── lib/ # Utilidades principales
│ ├── auth.tsx # Configuración de autenticación
│ ├── api-client.ts # Cliente HTTP Axios
│ ├── react-query.ts # Configuración de React Query
│ ├── authorization.tsx # Lógica RBAC
│ └── storage.ts # Abstracción de localStorage
├── app/ # Configuración de la aplicación
│ ├── router.tsx # Definiciones de rutas
│ └── provider.tsx # Proveedores de la app
├── store/ # Stores de Zustand
│ ├── use-user-store.ts
│ ├── use-quotation-store.ts
│ └── ...
├── config/ # Configuración
│ ├── env.ts # Variables de entorno
│ ├── paths.ts # Definiciones de rutas
│ └── constants.ts # Constantes de la app
├── types/ # Definiciones de tipos TypeScript
│ ├── api.ts # Tipos de API
│ └── authorization.ts # Tipos de autenticación
└── utils/ # Funciones utilitarias
├── sidebar-settings.ts
└── ...

Arquitectura del Sistema

graph TB
    Admin["Admin<br/>[Persona]<br/>Administrador de plataforma"]
    Agent["Agente<br/>[Persona]<br/>Agente de servicio al cliente"]
    Provider["Proveedor<br/>[Persona]<br/>Proveedor de servicios"]
    Client["Cliente<br/>[Persona]<br/>Cliente final"]

    Dashboard["Dashboard React<br/>[React 19, TypeScript]<br/>Aplicación web que proporciona UI para todos los roles"]
    Gateway["API Gateway<br/>[NestJS]<br/>Punto de entrada único para todas las solicitudes de API"]

    subgraph Backend["Microservicios Backend"]
        OrdersMS["Orders MS<br/>[NestJS]<br/>Gestión de órdenes"]
        ProviderMS["Provider MS<br/>[NestJS]<br/>Gestión de proveedores y subastas"]
        AuthMS["Auth MS<br/>[NestJS]<br/>Autenticación"]
        NotificationsMS["Notifications MS<br/>[NestJS]<br/>Notificaciones por email"]
    end

    Admin -->|"Usa<br/>HTTPS"| Dashboard
    Agent -->|"Usa<br/>HTTPS"| Dashboard
    Provider -->|"Usa<br/>HTTPS"| Dashboard
    Client -->|"Usa<br/>HTTPS"| Dashboard

    Dashboard -->|"Realiza llamadas API<br/>HTTPS/REST"| Gateway

    Gateway -->|"Enruta solicitudes<br/>Redis/Kafka"| OrdersMS
    Gateway -->|"Enruta solicitudes<br/>Redis/Kafka"| ProviderMS
    Gateway -->|"Enruta solicitudes<br/>Redis/Kafka"| AuthMS
    Gateway -->|"Enruta solicitudes<br/>Redis/Kafka"| NotificationsMS

    style Admin fill:#08427b,stroke:#052e56,color:#ffffff
    style Agent fill:#08427b,stroke:#052e56,color:#ffffff
    style Provider fill:#08427b,stroke:#052e56,color:#ffffff
    style Client fill:#08427b,stroke:#052e56,color:#ffffff
    style Dashboard fill:#438dd5,stroke:#2e6295,color:#ffffff
    style Gateway fill:#1168bd,stroke:#0b4884,color:#ffffff
    style OrdersMS fill:#438dd5,stroke:#2e6295,color:#ffffff
    style ProviderMS fill:#438dd5,stroke:#2e6295,color:#ffffff
    style AuthMS fill:#438dd5,stroke:#2e6295,color:#ffffff
    style NotificationsMS fill:#438dd5,stroke:#2e6295,color:#ffffff

Catálogo de Módulos de Funcionalidad

FuncionalidadDominioCapacidades ClaveRoles de UsuarioRutasFuente
authAutenticaciónLogin, registro, recuperación de contraseñaTodos (público)/auth/sign-in, /auth/sign-up-client, /auth/sign-up-providerpaths.auth.*
ordersGestión de ÓrdenesCiclo de vida de órdenes, asignaciones, reportesAdmin, Agente/dashboard/orders, /dashboard/orders/details/:orderIDpaths.app.orders, paths.app['order-details']
marketplaceSubastasSistema de subastas, ofertas, cotizacionesAdmin, Agente, Proveedor/dashboard/marketplace/auctions, /dashboard/marketplace/auctions-providerpaths.app['marketplace-auction-list'], paths.app['marketplace-auction-list-provider']
providersGestión de ProveedoresSeguimiento de trabajos, facturas, perfil, documentosProveedor/dashboard/providers/works, /dashboard/providers/invoices, /dashboard/providers/profilepaths.app.provider, paths.app['provider-invoices'], paths.app['provider-profile']
assetsGestión de ActivosCiclo de vida de activos, seguimiento de erroresAdmin, Agente/dashboard/assets, /dashboard/errorspaths.app.assets, paths.app['assets-error']
clientsPortal de ClientesSeguimiento de órdenes, aprobación de cotizaciones, calificacionesCliente/dashboard/client/orderspaths.app['my-orders-client']
usersGestión de UsuariosGestionar clientes, proveedores, personalAdmin, Agente/dashboard/users/clients, /dashboard/users/providers, /dashboard/users/managementpaths.app.users, paths.app['users-providers'], paths.app['users-management']
dashboardAnalíticasKPIs, métricas, insights de negocioAdmin, Agente/dashboardpaths.app.dashboard
contracts-and-policiesContratos (Contador)Gestión de contratos/pólizas para contadoresContador/dashboard/accountant/contractspaths.app['contracts-and-policies']
admin-contracts-and-policiesContratos (Admin)Gestión de contratos/pólizas para adminsAdmin, Agente/dashboard/contractspaths.app['admin-contracts-and-policies']
guarantees-contracts-and-policiesContratos (Garantías)Gestión de contratos/pólizas para garantíasGarantías/dashboard/guarantees/contracts-policiespaths.app['guarantees-contracts-and-policies']
accountingContabilidadSeguimiento financiero, pagosAdmin, Agente/dashboard/accountant/accountingpaths.app.accounting
monitoring-panelMonitoreoSeguimiento de mensajesAdmin, Agente, Cliente/dashboard/monitoring-panelpaths.app['monitoring-panel']

Stack Tecnológico

CategoríaTecnologíaVersiónPropósito
FrameworkReact19.1.0Librería de UI
LenguajeTypeScript5.8.3JavaScript con tipos
Herramienta de BuildVite6.3.5Build rápido y servidor de desarrollo
CompiladorSWC-Compilación rápida de TypeScript/JSX
EstilosTailwind CSS4.1.6CSS utility-first
RuteoReact Router6.30.0Ruteo del lado del cliente
Estado del Servidor@tanstack/react-query5.76.0Gestión de estado del servidor
Estado del ClienteZustand5.0.4Gestión de estado del cliente
FormulariosReact Hook Form7.56.3Manejo de formularios
ValidaciónZod3.23.8Validación de esquemas
Cliente HTTPAxios1.9.0Solicitudes API
Componentes UIRadix UI-Primitivos accesibles
IconosLucide React0.510.0Librería de iconos
GráficosRecharts2.15.3Visualización de datos
PruebasVitest3.1.3Pruebas unitarias
Pruebas E2EPlaywright1.52.0Pruebas de extremo a extremo
Calidad de CódigoESLint9.25.0Linting
FormateoPrettier3.5.3Formateo de código
Git HooksHusky9.1.7Hooks de pre-commit
Gestor de Paquetespnpm10.15.0Gestor de paquetes rápido

Principios de Arquitectura

1. Organización Basada en Funcionalidades (Bulletproof React)

Cada funcionalidad es auto-contenida con sus propios componentes, hooks, llamadas API y tipos. Esto promueve:

  • Modularidad: Las funcionalidades pueden desarrollarse independientemente
  • Escalabilidad: Fácil agregar nuevas funcionalidades sin afectar las existentes
  • Mantenibilidad: Límites claros entre funcionalidades
  • Colaboración en Equipo: Múltiples desarrolladores pueden trabajar en diferentes funcionalidades

2. Separación de Responsabilidades

  • Componentes UI: Solo lógica de presentación (components/ui/)
  • Lógica de Negocio: Encapsulada en hooks personalizados (features/*/hooks/)
  • Obtención de Datos: Aislada en archivos de API (features/*/api/)
  • Gestión de Estado: Clara distinción entre estado del servidor (React Query) y estado del cliente (Zustand)

3. Seguridad de Tipos con TypeScript en Modo Estricto

  • Todo el código está estrictamente tipado
  • No hay tipos any implícitos
  • Detección de errores en tiempo de compilación
  • Mejor soporte de IDE y autocompletado

4. Composición de Componentes sobre Prop Drilling

  • Los componentes se componen de componentes más pequeños
  • Se usa contexto o gestión de estado para estado compartido
  • Las props se mantienen mínimas y explícitas

5. Separación de Estado del Servidor vs Estado del Cliente

  • Estado del Servidor (React Query): Datos de la API (órdenes, usuarios, activos)
  • Estado del Cliente (Zustand): Estado de UI, preferencias de usuario, datos temporales
  • Diferentes preocupaciones requieren diferentes soluciones

6. Lazy Loading para Rendimiento

  • Todas las rutas se cargan de forma diferida
  • División de código por funcionalidad
  • Tamaño de bundle inicial más pequeño
  • Tiempo más rápido para interactividad

7. Control de Acceso Basado en Roles (RBAC)

  • Capa de autenticación con JWT
  • Verificaciones de autorización en rutas y componentes
  • Cuatro roles de usuario distintos con diferentes capacidades
  • Seguro por defecto

8. Error Boundaries para Resiliencia

  • Error boundaries en todas las rutas
  • Manejo de errores graceful
  • Mensajes de error amigables para el usuario
  • Registro de errores para depuración

Referencias Cruzadas

Documentación Detallada:

Integración con Backend:

Guías de Desarrollo:

Inicio Rápido

Configuración de Desarrollo

Ventana de terminal
# Instalar dependencias
pnpm install
# Iniciar servidor de desarrollo
pnpm dev
# Abrir navegador en http://localhost:5173

Build para Producción

Ventana de terminal
# Build para producción
pnpm build
# Vista previa del build de producción
pnpm preview

Pruebas

Ventana de terminal
# Ejecutar pruebas unitarias
pnpm test
# Ejecutar pruebas E2E
pnpm test:e2e
# Ejecutar pruebas con cobertura
pnpm test:coverage

Calidad de Código

Ventana de terminal
# Lint del código
pnpm lint
# Formatear código
pnpm format
# Verificación de tipos
pnpm type-check

Referencia Rápida de Estructura del Proyecto

  • ¿Necesitas agregar una nueva funcionalidad?src/features/[nombre-funcionalidad]/
  • ¿Necesitas agregar un componente UI?src/components/ui/
  • ¿Necesitas agregar una ruta?src/app/router.tsx
  • ¿Necesitas configurar la API?src/lib/api-client.ts
  • ¿Necesitas agregar tipos?src/types/
  • ¿Necesitas agregar utilidades?src/utils/

Referencias:

  • algesta-dashboard-react/package.json
  • algesta-dashboard-react/vite.config.ts
  • algesta-dashboard-react/tsconfig.json
  • algesta-dashboard-react/AGENTS.md
  • Estructura de directorios de exploración del código