Este informe establece la convención definitiva para el manejo de estados en todas nuestras aplicaciones, en línea con nuestra arquitectura de desarrollo. El objetivo es garantizar la coherencia, la modularidad y la escalabilidad del código en todas las divisiones.
La arquitectura de estados de Lidertech se basa en un modelo híbrido que separa la responsabilidad del estado según su alcance:
Estado Local: Se gestiona dentro de cada componente.
Estado Global: Se centraliza y gestiona a través de servicios.
Esta separación evita el acoplamiento excesivo y mejora la autonomía de las unidades de código.
La gestión de estados se implementa utilizando las siguientes herramientas:
Signals: Son la única herramienta de reactividad para el manejo de estados en componentes y servicios. Se prohíbe el uso de RxJS para esta tarea.
StatesEnum: Un único archivo de enumeración que contiene todos los estados posibles de la aplicación (DEFAULT, LOADING, SUCCESS, ERROR, etc.). Es la fuente de la verdad para el vocabulario de estados.
StatesService: Un servicio dedicado a gestionar estados globales que deben ser compartidos entre múltiples partes de la aplicación.
Cada componente es una unidad autónoma y, por lo tanto, gestiona su propio estado interno:
Cada componente debe declarar su propia signal local para el estado, nombrada states.
El estado de la signal se establece utilizando los valores del StatesEnum.
El estado de un componente no debe influir directamente en el estado de otro.
Esta convención garantiza que los componentes sean altamente reutilizables y facilita enormemente la depuración, ya que el estado es local y su comportamiento es predecible.
Los servicios son la capa de lógica que orquesta el estado de toda la aplicación:
Los servicios deben utilizar el StatesService para comunicar los estados que son relevantes a nivel global.
Ejemplos de estados globales incluyen: el estado de autenticación de un usuario, el estado de una carga de datos inicial de la aplicación, o si la aplicación está en un estado de error crítico.
Los servicios son los únicos elementos que interactúan directamente con el StatesService.
Elemento
Tipo de Estado que Gestiona
Herramienta a Utilizar
Componente
Estado Local
signal local (states) + StatesEnum
Servicio
Estado Global
StatesService + StatesEnum
El repositorio nos da lo que se necesita en cada proyecto
Schematics de la Biblioteca: por definir