Este documento describe la arquitectura del sistema utilizado en el Proyecto Bienal del Chaco 2024, proporcionando una visión detallada de sus componentes principales y su interacción.
El proyecto es una plataforma interactiva para gestionar eventos y esculturas relacionadas con la Bienal del Chaco. Permite a los usuarios votar, obtener información y participar en actividades del evento.
El sistema sigue una arquitectura monolítica basada en cliente-servidor. El frontend se comunica con el backend a través de una API RESTful, mientras que la base de datos se gestiona mediante Sequelize sobre PostgreSQL.
- React (TypeScript): Construcción de interfaces con tipado estático.
- Tailwind CSS: Framework para diseñar interfaces de manera rápida y responsiva.
- Vite: Herramienta de desarrollo rápida con recarga en caliente.
- Framer Motion y GSAP: Librerías para animaciones avanzadas.
- Node.js / Express: Entorno de ejecución y framework para gestionar rutas y solicitudes.
- Sequelize / PostgreSQL: ORM para interactuar con la base de datos relacional.
- bcryptjs / JWT: Gestión de seguridad con hashing de contraseñas y autenticación basada en tokens.
- PostgreSQL: Sistema de gestión de bases de datos relacional utilizado para almacenar datos del evento y las esculturas.
El flujo de datos es el siguiente:
- El usuario interactúa con el frontend.
- El frontend hace una solicitud HTTP al backend.
- El backend procesa la solicitud y consulta la base de datos.
- El backend responde con los datos o confirmaciones necesarias.
- El frontend actualiza la UI.
- React (TypeScript), Tailwind CSS, Vite, Framer Motion, Swiper, GSAP, React Router Dom
- Node.js, Express, Sequelize, PostgreSQL, bcryptjs, JWT, dotenv, node-schedule
- Yarn
- Git
- Concurrently, PostCSS, daisyUI
- MVC (Modelo-Vista-Controlador): Para separar la lógica de negocio, la interfaz de usuario y los datos, facilitando la mantenibilidad.
- Escalabilidad Horizontal y Vertical para manejar mayores volúmenes de tráfico y procesamiento.
- Pruebas automatizadas y documentación aseguran la calidad y facilidad de mantenimiento del sistema.
- JWT para autenticación y bcryptjs para cifrado de contraseñas.
- Prevención de SQL Injection, XSS y CSRF mediante validaciones y buenas prácticas en el código.
- Desarrollo, Testing y Producción están configurados para pruebas y despliegues sin afectar la estabilidad del sistema.
- Pull del código desde el repositorio.
- Ejecución de pruebas automatizadas.
- Despliegue en producción.
- JWT: Token utilizado para la autenticación de usuarios.
- ORM: Técnica para interactuar con bases de datos utilizando objetos.
- Documentación de React: https://reactjs.org
- Documentación de Sequelize: https://sequelize.org