Grúas UCAB

Servicio de Grúas de la UCAB

La historia

Durante mi segunda vez cursando la materia de Desarrollo de Software, se nos asigno el desarrollo de una aplicación para la administración y gestión de datos de una empresa de servicios de Grúas.

Requirió el desarrollo de tres aplicaciones: una plataforma web, una aplicación móvil y una API web.

El enfoque del curso era el backend, era requerido que fuera desarrollado con .NET Core, siguiendo la arquitectura de microservicios y hexagonal, DDD y CQRS.

Eramos un equipo de 3 personas, Pedro, Andrea y Yo. Pedro trabajo principalmente en el backend y aplicación móvil, siguiendo los interfaces que implemento Andrea. Yo fui el líder de equipo y definí la implementación y arquitectura y detalles técnicos de la aplicación, ademas de trabajar en el backend, me enfoque principalmente en la aplicación web.

Un vistazo a la Plataforma Administrativa

Existen 4 tipos de usuarios: Proveedor, Conductor, Operador y Administrador. Cada uno tiene permisos y responsabilidades distintas. Los proveedores pueden registrar sus grúas y conductores, los conductores pueden aceptar y completar órdenes, los operadores pueden crear y asignar órdenes y los administradores pueden gestionar usuarios y datos de la plataforma.

Creación y asignación de órdenes

La plataforma web sirve como plataforma de administración, permite gestionar los datos de los proveedores, conductores y operadores, crear ordenes y gestionar los datos.

Los operadores reciben las llamadas de los clientes accidentados y se encargan de crear las órdenes de servicio y asignarlas a los conductores. Cuando la orden es creada, se envía una notificación al conductor asignado, este puede aceptar o rechazar la orden desde la app móvil.

Creación y asignación de órdenes

Ordenes de servicio

El costo de las ordenes se calcula automáticamente, según la distancia requerida para ser realizado. Ademas, los conductores pueden solicitar costos adicionales, en el caso de que el servicio presente complicaciones, como peajes, zonas rojas, etc.

Dependiendo de la póliza del cliente, el costo del servicio podría ser gratis (como es el caso en la imagen). La empresa cuenta con distintos tipos de grúas, y el sistema asegura que se elija la grúa correcta para el vehículo del cliente.

Ordenes de servicio

Proveedores

Los proveedores son los dueños de los locales que ofrecen servicios de grúas. Estos gestionan la información de su empresa, sus conductores y vehículos. El sistema cuenta con dos tipos de proveedores: internos y externos. Al asignar una orden, el sistema le da prioridad a los conductores de proveedores internos, siempre y cuando no se sacrifique la satisfacción del cliente.

Proveedores

Microservicios

El backend fue desarrollado siguiendo la arquitectura de microservicios, en la cual se separan las aplicaciones en módulos independientes, cada uno con su propio código y funcionalidad. Esto permite escalar y mantener la aplicación en un entorno de producción de manera eficiente. Definimos 3 microservicios, Ordenes, Proveedores y Admin

El sistema cuenta con autenticación por JWT, colas con RabbitMQ, cache con Redis, envío de notificaciones con Firebase Cloud Messaging, envío de correos con MailerSend, sistema de loggeo, etc.

Sin embargo, aumenta la complejidad de la aplicación y requiere un conocimiento más profundo de los frameworks y tecnologías utilizadas. Tuvimos muchísimos problemas con el despliegue, causando que tuvimos que correr las aplicaciones desde nuestras maquinas y exponer un puerto con Ngrok.

El punto de entrada de la aplicación es un API Gateway, que se encarga de redirigir las peticiones a los microservicios correspondientes. Cada servicio estaba dockerizado para facilitar su desarrollo y despliegue. El siguiente diagrama muestra un ejemplo de la arquitectura:

Microservicios

Tecnologías usadas

Usamos .Net Core para el backend, Expo para la app móvil y Next.js para la app web.

Frontend

Next.js
Expo
Tailwind

Backend

.NET Core
Docker

Mis otros proyectos

Left Arrow Gymnastic Center