Skip to content

1. 30‐12‐2023

Paula Suárez edited this page Jan 15, 2024 · 1 revision

Confección del proyecto

Este documento detalla los pasos y consideraciones necesarias para establecer la base del proyecto

Tecnologías utilizadas

Estas decisiones se encuentran justificadas en la sección 00. Decisiones Arquitectónicas

  • Node.js
  • Express
  • React
  • TypeScript
  • Vite.js + SWC
  • Docker
  • MongoDB

Para la integración y despliegue continuos, se implementan flujos de trabajo automatizados mediante GitHub Actions.

En la parte de frontend, se hace uso de herramientas como Vite.js que desempeñan un papel crucial en la mejora del rendimiento.Además, se integra eslintrc.js para garantizar la calidad del código.

La elección de herramientas está orientada a facilitar el desarrollo de la aplicación así como facilitar el posterior despliegue al automatizar parte de los procesos.

Arquitectura del proyecto

La arquitectura del proyecto está diseñada para optimizar la eficiencia y la robustez del desarrollo de la aplicación. Se caracteriza por una clara división entre cliente y servidor, encapsulados respectivamente en webapp (frontend) y restapi (backend). Esta separación promueve una organización modular, facilitando el mantenimiento del proyecto al separar de forma clara las distintas responsabilidades.

Se utiliza Docker de tal manera que cada parte de la aplicación reside en su propio contenedor. Al contenerizar los servicios de restapi y webapp por separado, se minimiza el riesgo de un fallo en cadena, ya que cada contenedor opera de manera aislada, mejorando así la disponibilidad y confiabilidad del sistema completo.

Estructura de Directorios y Archivos

  • .github/workflows: Contiene las definiciones de los flujos de trabajo de GitHub Actions para la integración y despliegue continuos (CI/CD), automatizando pruebas y deployment.

  • restapi:

    • node_modules

    • src: Código fuente de la API. Contiene las siguientes subcarpetas:

      • models: Representación de las entidades que maneja la aplicación. En esta carpeta se definen los esquemas utilizados en la base de datos MongoDB.
      • controllers: Manejan la lógica de la interacción entre el modelo de datos y las respuestas JSON que se envían de vuelta al cliente.
      • middlewares: Incluye la lógica de autenticación, manejo de errores, etc.
      • routes: Se definen las rutas de la API, es decir, las rutas que mapean las solicitudes HTTP a los controladores específicos.
    • tests: Pruebas automatizadas para la API que aseguran la calidad del código y la funcionalidad.

    • server.ts: Configuración del servidor y conexión a la base de datos MongoDB

    • .dockerignore y Dockerfile: Configuraciones para Docker

    • package.json y package-lock.json: Gestión de paquetes de Node.js

    • README.md: Documentación sobre la API.

  • webapp:

    • node_modules
    • public: Contiene archivos estáticos
    • src: Código fuente de la interfaz de la aplicación
      • api: Contiene las solicitudes al backend (restapi)
      • assets: contiene los recursos estáticos que se utilizan en la aplicación
      • views: Contiene las carpetas components, layouts y pages para la composición de la interfaz de usuario.
    • .dockerignore, Dockerfile: Configuraciones de Docker
    • .eslintrc.js: Configuración de ESLint para estandarización de código.
    • vite.config.ts: Configuración de Vite.js
    • tsconfig.json y tsconfig.node.json: Configuraciones para el uso de TypeScript en la aplicación.
  • docker-compose.yml y docker-compose-deploy.yml: Archivos de Docker Compose para definir y ejecutar aplicaciones multi-contenedor.

  • .gitignore

  • README.md: Documentación general del proyecto.

📆 30/12/2023 - 04/01/2024