Componentes
3. Componentes del API (C4 – Nivel 3)
3.1 Descripción General
En este nivel de abstracción, desglosamos el contenedor principal de la API REST (tu aplicación ASP.NET Core) en sus piezas internas clave o módulos principales. Estos componentes, aunque lógicamente separados, se ejecutan dentro del mismo proceso y se comunican principalmente mediante llamadas a métodos (in-process). Cada componente:
- Tiene una responsabilidad clara y específica.
- Contribuye a la funcionalidad general del API.
- Interactúa con otros componentes a través de interfaces bien definidas.
3.2 Módulos Principales y Responsabilidades
| Módulo | Controller | Use Cases (Application) | Infraestructura / Servicios externos |
|---|---|---|---|
| Autenticación | AuthController | AuthenticateUser, RefreshToken | IAuthService → AuthService |
| Recursos | ResourcesController | ListResources, GetResource, ManageResource | IResourceRepository → ResourceRepository |
| Reservas | ReservationsController | BookResource, CancelReservation, ListUserReservations | IReservationRepository → ReservationRepository |
| Pagos | PaymentsController | ProcessPayment, RefundPayment | IPaymentService → StripePaymentService |
| Sincronización | InventoryController | SyncInventory, CheckAvailability | IInventoryService → InventoryExternalService |
| Salud y métricas | HealthController, MetricsController | RunHealthChecks, FetchMetrics | IHealthCheckService, IMetricsProducerService |
3.2 Componentes del Contenedor Web SPA (React + Vite)
3.2.1 Módulos Principales
| Componente | Tipo | Responsabilidad |
|---|---|---|
| Layout | React Component | Estructura global: header, footer y rutas |
| NavBar | React Component | Navegación principal |
| ResourceList | Feature Module | Listado de recursos (sillas, mesas, luces) |
| ResourceDetail | Feature Module | Vista de detalle de un recurso, disponibilidad |
| ReservationForm | Feature Module | Formulario para reservar un recurso |
| ApiService | TS Class / Hook | Métodos HTTP (fetch/Axios) para consumir la API |
| useAuth | Custom Hook | Autenticación, persistencia de tokens |
| StateStore | Zustand/Redux | Estado global: usuario, carrito de reserva |
| SharedUI | UI Library | Botones, inputs, modales reutilizables |