Desarrollo del Proyecto

Este proyecto ha sido diseñado con una arquitectura modular distribuida, compuesta por tres capas independientes: una aplicación cliente en Python que se conecta a un vehículo vía OBD2, una API REST desarrollada con FastAPI y una aplicación web frontend en Angular 18. Cada componente ha sido creado bajo principios de escalabilidad, mantenibilidad y seguridad.

Casos de Uso y Escenarios Prácticos

El sistema ha sido diseñado para adaptarse a distintos tamaños de talleres mecánicos, permitiendo una implementación flexible, eficiente y rentable. A continuación, se resumen los escenarios más comunes de uso real:

  • 🔧 Taller pequeño (1–3 mecánicos): instalación local en un único equipo con el cliente OBD2, interfaz web para diagnóstico básico y generación de informes desde el mismo dispositivo.
  • 🔧 Taller mediano (4–10 mecánicos): servidor local centralizado que conecta múltiples pantallas, cada una asociada a un mecánico. Permite gestión simultánea de vehículos y coordinación de informes.
  • 🔧 Taller grande (+10 mecánicos): infraestructura escalada con contenedores distribuidos, control de acceso por usuario, múltiples clientes OBD2, y uso intensivo de trazabilidad e informes.

Además, el sistema incluye:

  • 📩 Envío automático de informes por email al cliente con acceso seguro por token único.
  • 📘 Guía paso a paso para diagnósticos basada en errores OBD-II detectados.
  • 🔄 Historial completo de intervenciones para cada vehículo, con opción de aceptación/rechazo por parte del cliente.

Seguridad del Sistema

La seguridad ha sido un pilar desde la concepción del proyecto. Se aplicaron buenas prácticas en todos los niveles, desde el backend hasta la infraestructura de red:

  • 🔒 Contraseñas: almacenadas con hashing robusto (bcrypt) mediante passlib.
  • 🔐 Autenticación: basada en JWT, con control de expiración y validación por roles.
  • 🔑 Tokens UUID: para compartir informes de forma segura con el cliente.
  • 🧾 Variables sensibles: gestionadas mediante archivos .env fuera del repositorio.
  • 🌐 Comunicación cifrada: todo el tráfico usa HTTPS con certificados SSL gestionados por Traefik y Let's Encrypt.
  • 🚫 Protección contra ataques: mitigación de SQL Injection, XSS y fuerza bruta mediante integración con Fail2Ban y el uso de Angular.
  • 📈 Trazabilidad: integración con Prometheus y Jaeger para detectar patrones sospechosos y diagnósticos anómalos.

Estrategia de Pruebas y Validación

El proyecto ha sido validado exhaustivamente mediante múltiples capas de pruebas, asegurando su fiabilidad en entornos reales:

  • Pruebas unitarias: desarrolladas con pytest para validar los endpoints y la lógica del backend.
  • 🔗 Pruebas de integración: entre cliente, API y base de datos para garantizar la coherencia de los flujos.
  • 📊 Pruebas de rendimiento: realizadas con herramientas como Locust para evaluar el comportamiento ante carga alta.
  • 🧩 Entornos diferenciados: desarrollo, staging y producción, con control de versiones y rollback seguro mediante Docker.
  • 🚗 Validación con hardware real: pruebas con adaptadores OBD2 en múltiples modelos de vehículos, verificando la estabilidad del cliente.
  • 👀 Pruebas manuales de UI: simulación de flujos completos desde la lectura del vehículo hasta el envío del informe por correo.

Este enfoque permite mantener una alta calidad en cada entrega del sistema y facilita el mantenimiento evolutivo del proyecto.

API REST en Python (FastAPI)

La API es el núcleo del sistema. Está desarrollada con FastAPI e implementa autenticación con JWT, validación de datos con Pydantic, y gestión ORM con SQLAlchemy. Expone múltiples endpoints para la gestión de usuarios, vehículos, errores OBD-II e informes técnicos.

  • 🔐 Autenticación segura con tokens JWT y control de acceso.
  • 📋 Endpoints RESTful para CRUD de vehículos, errores e informes.
  • 📨 Envío automático de informes por correo con FastAPI-Mail.
  • 🧪 Validación exhaustiva de datos gracias a Pydantic.
  • 📄 Documentación Swagger accesible desde /docs.
  • 🔧 Código disponible en GitHub: Ver código API

Cliente de Diagnóstico (Python + OBD2)

La aplicación cliente se comunica directamente con el vehículo usando un adaptador OBD2 ELM327. Ha sido desarrollada en Python, con una interfaz gráfica simple usando Tkinter, y se distribuye como ejecutable para Windows mediante PyInstaller.

  • ⚙️ Captura de datos en tiempo real: RPM, velocidad, temperatura, errores DTC.
  • 📤 Comunicación directa con la API vía requests.
  • 🔁 Envío automático de datos periódicos para almacenamiento y análisis.
  • 💻 Compatible con Windows 7 en adelante, sin dependencias externas.
  • 🔗 Código fuente disponible: Ver cliente OBD2

Interfaz Web (Frontend Angular 18)

La aplicación web permite gestionar toda la información del sistema de forma intuitiva. Desarrollada en Angular 18, proporciona una experiencia fluida tanto en escritorio como en móviles.

  • 🧑‍🔧 Registro de usuarios, login con JWT y control de sesión.
  • 🚗 Gestión completa de vehículos, errores e informes técnicos.
  • 📊 Visualización de métricas en tablas y paneles dinámicos.
  • 📎 Generación de informes en PDF desde el navegador con html2pdf.js.
  • 🎨 Diseño responsive con Angular Material.
  • 🌐 Repositorio: Ver Frontend Angular

Despliegue y Arquitectura General

Todo el sistema está contenedorizado con Docker y se expone mediante Traefik como proxy inverso, con subdominios personalizados para cada servicio. La solución permite un despliegue ágil y seguro, ideal para talleres pequeños sin conocimientos técnicos avanzados.

Integración con DevOps

El proyecto incorpora herramientas modernas de DevOps que aseguran trazabilidad, automatización y control del estado del sistema. A continuación puedes ver los apartados detallados para cada componente: