Proyecto DAW

ReactPythonAstroTailwind CSSDockerGitPostgreSQLMongoDBFastAPI
Imagen proyecto Proyecto DAW

Descripción del proyecto

Aplicación web orientada a la gestión y alquiler de bicicletas en la que se tienen en cuenta las siguientes funcionalidades:

  1. Autenticación y registro
  2. Gestión de reservas
  3. Búsqueda en catálogo
  4. Foro con diferentes temáticas

Se trata del proyecto presentado con el objetivo de terminar mi formación como Desarrollador de Aplicaciones Web.

Arquitectura

Se utiliza una arquitectura de microservicios gestionada por un proxy inverso que actúa como API Gateway

Todo ello se empaqueta en diferentes contenedores garantizando independencia entre ellos y facilitando la escalabilidad y mantenibilidad.

Cada microservicio gestiona su propia BBDD de manera que se combian bases de datos relacionales para aquellos que necesitan datos estructurados (usuarios y reservas) y bases de datos no relacionales para esquemas más flexibles (catálogo y foro).

Stack tecnológico

Backend:

  1. Gestión de usuarios y autenticación: FastAPI + PostgreSQL utilizando un sistema de Cookies y tokens JWT.
  2. Gestión de reservas: FastAPI + PostgreSQL utilizando la clave primaria de los usuarios junto con la de la bicicleta con control de fechas.
  3. Catálogo de bicicletas: FastAPI + MongoDB .
  4. Foro: FastAPI + MongoDB con documentos por cada temática del foro y Array de mensajes con las respuestas de los usuarios.

Frontend:

Realizado con Astro para las partes estáticas de la web junto con islas React para renderizar componentes interactivos y lógica del cliente.

Aprendizaje y desafíos técnicos

La mayor dificultad se me presentó con la depuración de errores, ya que en muchas ocasiones no era capaz de encontrar el origen de los mismos.

Para solucionarlo me apoyé en herramientas de observabilidad como Portainer que me permitía acceder de manera rápida a los logs del backend y estado de los contenedores y extensiones del navegador como React Developer Tools que me facilitaban la depuración del frontend.

Esta experiencia me enseñó que una mala decisión arquitectónica puede generar una sobrecarga de configuración innecesaria si no se analiza bien el problema inicial.

Me di cuenta que no existe una arquitectura universal y que debe ser el contexto del proyecto y la complejidad técnica las que marquen el diseño.