Skip to main content

Frontend

El servicio Frontend es la capa de presentación de la plataforma ASPA. Actúa como el punto de interacción directo, permitiendo al usuario operar el sistema de forma visual e intuitiva a través de su navegador web sin necesidad de poseer conocimientos técnicos previos.

Funcionalidad

Las responsabilidades principales de este componente se centran en la interacción y la presentación de datos:

  • Configuración de análisis: Proveer la interfaz gráfica mediante la cual el usuario puede seleccionar y ajustar los filtros deseados sobre los conjuntos de datos territoriales.
  • Generación de peticiones: Procesar las selecciones del usuario para construir el FilterPayload. Este objeto de datos es fundamental, ya que encapsula y estructura todos los parámetros de filtrado necesarios para que el microservicio Back Node pueda llevar a cabo su responsabilidad funcional.
  • Visualización de resultados: Recibir la información ya procesada por el sistema y representarla gráficamente, integrando los datos de accesibilidad y los tiempos de viaje en mapas.

La estructura actual de un FilterPayload sería la siguiente:

FilterPayload {
generatedAt: string;
filters: {
normal: {
originSelections: string[];
destinationSelections: string[];
originCategory: string | null;
destinationCategory: string | null;
originFilterMode: string;
destinationFilterMode: string;
timeFilter?: {
mode: 'more' | 'less' | 'between' | null;
minutes?: number | null;
fromMinutes?: number | null;
toMinutes?: number | null;
} | null;
};
province: {
originSelection?: {
provinces: string[];
municipalities: string[];
allProvinces: boolean;
allMunicipalities: boolean;
};
destinationSelection?: {
provinces: string[];
municipalities: string[];
allProvinces: boolean;
allMunicipalities: boolean;
};
selection?: {
provinces: string[];
municipalities: string[];
allProvinces: boolean;
};
};
time?: {
operator: '<' | '>' | 'between';
value: number | [number, number];
} | null;
};
destinationSelectionMode?: 'include' | 'exclude';
destinationSelectionIds?: string[];
pasive?: boolean;
layerN?: number;
addedColumns?: string[];
};

Detalles técnicos y arquitectura

A nivel de desarrollo, este servicio está construido bajo un enfoque moderno que prioriza el rendimiento, la escalabilidad y la mantenibilidad del código:

  • Stack tecnológico: Desarrollado íntegramente en TypeScript para garantizar la seguridad del tipado estático. Utiliza la librería React para la creación de interfaces interactivas y se apoya en el framework Next.js para optimizar el enrutamiento y el rendimiento general de la aplicación.
  • Arquitectura modular: El código fuente mantiene una separación clara entre las vistas de usuario, y los componentes reutilizables, que se ensamblan para construir dichas vistas.
  • Control de calidad y Testing: Para asegurar la estabilidad del sistema frente a futuros cambios, el servicio incluye una batería de pruebas unitarias encargada de validar la lógica del código, implementada a través del entorno de pruebas Vitest.