10 KiB
Descripción del Proyecto Duxiter
1. Resumen del Proyecto
Duxiter es una aplicación web diseñada como una Plataforma de Evaluación de Proveedores. Permite a los usuarios registrarse, iniciar sesión y realizar evaluaciones de proveedores. El sistema parece soportar diferentes roles de usuario (ej. admin, admin de tenant, evaluador) y gestiona tenants, que representan diferentes organizaciones cliente que utilizan la plataforma. Las funcionalidades clave incluyen evaluaciones individuales y masivas, búsquedas de empresas, y visualización de resultados y resúmenes de evaluaciones. El proyecto también incluye características administrativas para gestionar usuarios y ver registros (ej. registros Sheriff).
El proyecto está estructurado como una aplicación full-stack con un frontend separado (React/TypeScript) y backend (Node.js/Express/TypeScript).
2. Tecnologías Utilizadas
- Frontend:
- React ( con Vite como herramienta de construcción, inferido de
vite.config.tsy estructura deindex.html) - TypeScript
- Tailwind CSS (inferido de
tailwind.config.js,postcss.config.js) - Axios (para comunicación con API, visto en
src/services/api.ts) - React Router (inferido de la estructura típica de proyectos React y necesidades de navegación)
- React ( con Vite como herramienta de construcción, inferido de
- Backend:
- Node.js
- Express.js
- TypeScript
- MongoDB (base de datos, inferido de
VITE_MONGODB_URIen.envyserver/src/config/db.ts) - Mongoose (ODM para MongoDB, inferido de archivos de modelo como
server/src/models/User.ts) - JWT (para autenticación, inferido de
VITE_JWT_SECRETen.envy middleware de auth) - Swagger/OpenAPI (para documentación de API, visto en
server/src/config/swagger.tsyserver/src/index.ts) - Helmet (para headers de seguridad)
- Express-rate-limit (para limitación de velocidad de API)
- Cors (para Cross-Origin Resource Sharing)
- Herramientas de Desarrollo y Construcción:
- ESLint (inferido de
eslint.config.js) - Jest (para testing, inferido de
jest.config.jsyrut.test.ts) - npm o yarn (gestión de paquetes, inferido de
package.json)
- ESLint (inferido de
- Despliegue:
- Nginx (como proxy reverso, basado en interacciones previas)
- Docker (potencialmente, aunque no directamente visible en los listados de archivos)
3. Frontend (src/)
La aplicación frontend está construida con React y TypeScript, ubicada en el directorio src.
3.1. Estructura
src/assets: Recursos estáticos como imágenes (ej.duxiter_logo.png).src/components: Componentes de UI reutilizables.src/components/auth: Componentes relacionados con autenticación (ej.ProtectedRoute.tsx,RoleProtectedRoute.tsx).src/components/common: Componentes comunes de propósito general (ej.PageLoader.tsx).src/components/layouts: Componentes de layout (ej.DashboardLayout.tsx).src/components/modals: Componentes de diálogo modal (ej.UserModal.tsx).
src/contexts: Proveedores de React Context API para gestión de estado global (ej.AuthContext.tsx,TenantContext.tsx).src/models: Modelos/tipos de datos del frontend, reflejando estructuras del backend (ej.evaluation.ts).src/pages: Componentes de página de nivel superior representando diferentes vistas/rutas.src/pages/admin: Páginas para usuarios administrativos (ej.AdminDashboard.tsx,SheriffLogDetailPage.tsx).src/pages/auth: Páginas de autenticación (ej.Login.tsx,Register.tsx).src/pages/dashboard: Página principal del dashboard.src/pages/evaluations: Páginas relacionadas con evaluaciones (ej.SingleEvaluation.tsx,BulkEvaluation.tsx,EvaluationsSummaryPage.tsx).src/pages/tenant: Páginas para gestión de tenants (ej.TenantSettings.tsx,TenantUsers.tsx).- Otras páginas como
CompanyLookup.tsx,LandingPage.tsx,NotFound.tsx.
src/services: Módulos para interactuar con la API del backend (ej.api.ts,companyService.ts,evaluationService.ts).src/types: Definiciones de tipos TypeScript para varias estructuras de datos (ej.auth.ts,evaluation.ts,sheriff.ts,tenant.ts).src/utils: Funciones de utilidad (ej.rut.test.tssugiere utilidades de validación de RUT).- Puntos de entrada principales:
main.tsx,App.tsx,index.html. - Configuración:
vite.config.ts,tsconfig.json,tailwind.config.js.
3.2. Características y Componentes Clave
- Autenticación de Usuario (Login, Registro)
- Rutas Protegidas basadas en estado de autenticación y roles de usuario.
- Dashboard para usuarios autenticados.
- Evaluación de Proveedores (individual y masiva).
- Visualización de Resultados y Resúmenes de Evaluaciones.
- Búsqueda de Empresas.
- Gestión de Tenants (configuraciones, usuarios).
- Funcionalidades de Admin (dashboard, visualización de registros).
- Gestión de estado global para información de Auth y Tenant.
4. Backend (server/src/)
La API del backend está construida con Node.js, Express y TypeScript, ubicada en el directorio server/src.
4.1. Estructura
server/src/config: Archivos de configuración para base de datos (db.ts,database.ts), Swagger (swagger.ts).server/src/controllers: Manejadores de solicitudes que interactúan con servicios y modelos (ej.auth.controller.ts,evaluation.controller.ts- asumido,user.controller.ts,tenant.controller.ts).server/src/middleware: Funciones de middleware de Express (ej.auth.middleware.tspara autenticación,role.middleware.tspara control de acceso basado en roles).server/src/models: Modelos de Mongoose definiendo el esquema de base de datos (ej.User.ts,Company.ts,Evaluation.ts,Tenant.model.ts,SheriffDataLog.ts).server/src/routes: Módulos de router de Express definiendo endpoints de API (ej.auth.routes.ts,user.routes.ts,evaluation.routes.ts,tenant.routes.ts). El router principal esserver/src/routes/index.ts.server/src/scripts: Scripts de utilidad (ej.migrate-tenant-usage.ts).server/src/services: Módulos de lógica de negocio que interactúan con modelos y servicios externos (ej.auth.service.ts,evaluationService.ts,userService.ts,OpenAIService.ts,siiService.ts,sheriffService.ts).server/src/types: Definiciones de tipos TypeScript específicas del backend.- Punto de entrada principal:
server/src/index.tsque configura la aplicación Express, middleware, rutas y arranca el servidor. - Configuración de Entorno:
server/.env(aunque también se usa el.envprincipal en la raíz).
4.2. Características y Componentes Clave
- API RESTful para interacción con el frontend.
- Autenticación y autorización de usuarios (basada en JWT).
- Operaciones CRUD para Usuarios, Tenants, Evaluaciones, Empresas.
- Servicios para manejar lógica de negocio compleja relacionada con evaluaciones, gestión de usuarios, etc.
- Integración con servicios externos (OpenAI, SII, Sheriff).
- Documentación de API vía Swagger.
- Medidas de seguridad (Helmet, limitación de velocidad).
- Interacción con base de datos vía Mongoose.
5. Base de Datos
- El proyecto utiliza MongoDB como su base de datos principal.
- La configuración se gestiona en
server/src/config/db.tsy la URI de conexión se especifica en el archivo.env(VITE_MONGODB_URI). - Mongoose se utiliza como el Object Data Mapper (ODM) para interactuar con MongoDB, con esquemas definidos en
server/src/models.
6. Despliegue y Entorno
- La aplicación se sirve vía Nginx, que actúa como un proxy reverso tanto para el frontend (aplicación React) como para la API del backend.
- Nginx maneja la terminación SSL y redirección de HTTP a HTTPS.
- Las variables de entorno se gestionan a través de archivos
.enven la raíz del proyecto y dentro del directorioserver/. Estas variables configuran conexiones de base de datos, claves de API (secreto JWT, token de API Sheriff), puertos del servidor y URLs base de API. - El backend incluye limitación de velocidad y headers de seguridad (Helmet) para preparación de producción.
7. Resumen de Funcionalidades Principales
- Gestión de Usuarios: Registro, login, roles de usuario, gestión de contraseñas.
- Gestión de Tenants: Instancias específicas de organización de la plataforma, gestión de usuarios dentro de tenants.
- Evaluación de Proveedores:
- Realizar evaluaciones individuales y masivas de proveedores.
- Procesar y almacenar datos de evaluación.
- Mostrar resultados y resúmenes de evaluaciones.
- Información de Empresas: Búsqueda y visualización de detalles de empresas.
- Scraping/Integración de Datos: Servicios como
scraperService.ts,siiService.ts,sheriffService.tssugieren integración con fuentes de datos externas o web scraping para enriquecer datos de proveedores. - Integración con IA:
OpenAIService.tssugiere el uso de OpenAI para algunas características, posiblemente relacionadas con análisis de datos o procesamiento en evaluaciones. - Administración: Dashboard para admins, logging (registros de datos Sheriff).
Este documento proporciona una visión general de alto nivel basada en la estructura de archivos del proyecto e interacciones previas. Se requeriría una inmersión más profunda en archivos específicos para una comprensión más granular de la implementación de cada componente.