Mantenova

Mantenova

Plataforma SaaS B2B para la gestión integral de inspecciones técnicas reglamentarias y mantenimiento industrial. Conecta empresas propietarias de instalaciones con empresas de inspección, automatiza el seguimiento de plazos normativos y centraliza toda la documentación en un único sistema, con contenido editable desde administración para personalización por empresa operadora.

Tecnologías

Python 3.14 Django 6.0 Django REST Framework drf-spectacular (OpenAPI/Swagger) PostgreSQL 16 Redis 7 Celery (worker + beat) Docker Docker Compose Nginx Gunicorn pytest 9.1 pytest-django factory_boy ruff django-modeltranslation django-tinymce pip-audit Dependabot HTML CSS (tokens propios) JavaScript PWA Git GitHub Actions Makefile

Roles

Análisis de negocio modelado de dominio arquitectura de software diseño de base de datos desarrollo backend desarrollo frontend diseño UI/UX design system DevOps (Docker CI/CD) testing (TDD) internacionalización planificación por fases documentación de decisiones (ADRs).

Resultados y Logros

  • Arquitectura modular sobre catálogos dinámicos: 25 tipos de instalación y 34 tipos de inspección gestionados desde la base de datos, con 120 combinaciones instalación–inspección. Añadir un nuevo tipo no requiere modificar código ni desplegar. Catálogos verificados contra normativa vigente (RD 164/2025 RSCIEI, RD 355/2024 ascensores, RD 178/2021 RITE, RD 552/2019 frigorífico, RD 487/2022 + RD 614/2024 legionella, RD 390/2021 + RD 659/2025 eficiencia energética).

  • Contenido editable desde administración: modelos SiteConfig (singleton global) y ContentBlock (bloques por página, bilingüe ES/EN, con django-tinymce para edición rica) que permiten personalizar logo, textos y secciones enteras sin desarrollo. Prepara la plataforma para modo marca blanca por empresa operadora.

  • Sistema de permisos por rol con overrides explícitos: cinco roles (root, representante propietaria, jefe de instalación, representante inspección, inspector) con acceso por defecto definido por rol, ampliable por recurso mediante PermissionOverride. Los overrides amplían, nunca restringen. Validación anti-IDOR en escrituras de API con tests de seguridad propios.

  • API REST documentada con OpenAPI/Swagger (drf-spectacular) lista para alimentar la PWA y futuras integraciones.

  • Motor de alertas automáticas preparado para notificar a 30, 15 y 7 días del vencimiento de inspecciones, con notificaciones in-app y email opt-in.

  • Preparación para firma digital cualificada (eIDAS) desde la capa de datos: campos de metadatos nullables integrados en Fase 1 para no obligar a reestructurar nada cuando se contrate el proveedor en Fase 8.

  • Infraestructura Docker multi-entorno (dev, staging, prod) con servicios web, postgres, redis, celery worker y celery beat; Makefile estandarizado replicable entre proyectos; CI/CD con GitHub Actions (ruff + pytest + pip-audit + Dependabot + suelo de cobertura fail_under=70).

  • Calidad enforced en CI, no en buenas intenciones: 129 tests pasando con 71% de cobertura, tests independientes del idioma (aserciones sobre códigos de error estables, no sobre texto traducible), auditoría automática de dependencias con pip-audit y Dependabot, suelo de cobertura como guarda en CI.

  • Internacionalización ES/EN desde el inicio con django-modeltranslation (catálogos, normativa, contenido editable). 0 cadenas dudosas en el catálogo de traducción.

  • Identidad visual y design system propios: logo, paleta (Grafito/Cobre/Ámbar/Arena), tipografía (Inter Display + Inter + Noto Sans Mono) y tokens CSS definidos antes de tocar la capa de templates.

  • Decisiones documentadas como ADRs (Architecture Decision Records) en docs/adr/, para que el "por qué" de cada decisión sobreviva al "qué".

  • Proyecto enraizado en experiencia directa en el sector eléctrico industrial: los tipos de instalación, las periodicidades y los flujos están modelados a partir de necesidades reales verificadas, no de supuestos.

  • Mantenova resuelve un problema observado de primera mano en el sector industrial español: la gestión de inspecciones técnicas reglamentarias y documentación asociada sigue dependiendo en gran medida de hojas de cálculo, correos dispersos y llamadas telefónicas, pese a tratarse de procesos con plazos legales estrictos y consecuencias económicas y de seguridad reales.

  • La plataforma ofrece un espacio unificado donde las empresas propietarias de instalaciones (centros de transformación, plantas fotovoltaicas, naves industriales, oficinas, locales, instalaciones petrolíferas, frigoríficas, equipos a presión, grúas, ATEX, etc.) gestionan sus activos y coordinan inspecciones con empresas de inspección técnica registradas, que a su vez administran sus inspectores, zonas de trabajo y calendarios. Un motor de alertas automáticas avisa antes del vencimiento de cada inspección, la mensajería contextual mantiene las conversaciones vinculadas al recurso correspondiente, la gestión documental está preparada desde la capa de datos para firma digital cualificada (eIDAS), y todo el contenido visual de las páginas públicas es editable desde administración, preparando la plataforma para personalización por empresa operadora.

  • Estado actual: V2 en desarrollo profesional activo. La V1, entregada y validada en 2025, sirvió como validación funcional del concepto. La V2 es una reescritura completa con arquitectura modular y testada, planificada en nueve fases (0–8) con criterios objetivos de cierre. Cuatro fases cerradas (infraestructura, modelos, lógica de negocio y API REST) con 129 tests pasando y 71% de cobertura enforced en CI; Fase 4 (vistas y frontend) en curso con páginas públicas ya completas. El detalle de fases, decisiones y avance verificable está en la sección de hoja de ruta.

El problema

En el sector industrial español, la gestión de inspecciones técnicas reglamentarias sigue dependiendo en gran medida de hojas de cálculo, correos electrónicos y llamadas telefónicas. Las empresas propietarias de instalaciones —naves industriales, centros de transformación, plantas fotovoltaicas, locales comerciales— deben cumplir con decenas de inspecciones periódicas con plazos legales: OCA cada cinco años, RITE cada cuatro años, medición de tierras trienal, RSCIEI cada cinco años, ascensores cada 2, 4 o 6 años según tipo de edificio, RIPCI, legionella…

Cuando estos plazos se gestionan manualmente, se producen retrasos, se pierden documentos, se duplican comunicaciones y se incumplen normativas. El coste no es solo económico: un certificado caducado puede paralizar una actividad o generar responsabilidades legales.

Mantenova nace de la observación directa de este problema en el sector eléctrico industrial.

La solución

Mantenova es una plataforma SaaS B2B que reúne, en un único sistema, a los dos lados del proceso:

  • Empresas propietarias de instalaciones, que gestionan sus activos, solicitan inspecciones y conservan toda la documentación asociada.

  • Empresas de inspección técnica, que gestionan a sus inspectores, definen las zonas en las que operan, y reciben, aceptan y completan inspecciones.

Sobre esta base, la plataforma aporta:

  • Catálogo dinámico de 25 tipos de instalación y 34 tipos de inspección, con 120 combinaciones que reflejan qué inspecciones aplican a cada tipo de instalación y con qué periodicidad legal.

  • Motor de alertas automáticas que avisa antes del vencimiento de cada inspección.

  • Mensajería contextual vinculada a empresa, instalación o inspección concretas, para que la conversación siempre tenga referencia explícita.

  • Gestión documental con versionado y metadatos preparados para firma digital cualificada.

  • Contenido editable desde administración (logo, textos, secciones de páginas públicas) que permite personalizar la plataforma por empresa operadora sin desarrollo adicional.

  • Catálogo de normativa técnica con enlaces directos a fuentes oficiales.

  • PWA para acceso desde cualquier dispositivo, sin dependencia de tiendas de aplicaciones.

Arquitectura y decisiones técnicas

La V2 está construida sobre Django 6.0, Python 3.14, PostgreSQL 16, Redis 7 y Celery, todo orquestado con Docker Compose en tres entornos (dev, staging, prod). La API REST está documentada con OpenAPI/Swagger (drf-spectacular). El frontend se desarrolla sobre un design system propio (paleta, tipografía y tokens CSS) y se entrega como Progressive Web App.

Algunas decisiones de arquitectura que vale la pena destacar:

  • Catálogos dinámicos, no enums hardcoded. Los tipos de instalación e inspección viven en la base de datos. Añadir un tipo nuevo no requiere migración de código ni despliegue: se hace desde el panel de administración. Los catálogos están verificados contra normativa vigente (RD 164/2025 RSCIEI, RD 355/2024 ascensores, RD 178/2021 RITE, RD 552/2019 frigorífico, RD 487/2022 + RD 614/2024 legionella, RD 390/2021 + RD 659/2025 eficiencia energética).

  • Un solo modelo de inspección + detalles solo donde aportan valor. En lugar de 34 modelos separados por tipo, hay un modelo único Inspeccion y solo 11 modelos de detalle para los tipos que necesitan campos extra (OCA, tierras, RITE, RSCIEI, presión, frigorífico, gases, APQ, grúa, legionella, estanqueidad).

  • Empresa única con campo tipo (propietaria o inspección), no dos modelos paralelos: simplifica relaciones, reportes y permisos.

  • Roles + overrides explícitos. Cinco roles definen el acceso por defecto; PermissionOverride permite ampliar accesos sobre recursos concretos sin tocar el modelo de roles. Los overrides amplían, nunca restringen. Validación anti-IDOR en escrituras de API con tests de seguridad dedicados.

  • Contenido editable desde administración. Modelos SiteConfig (singleton global) y ContentBlock (bloques por página, bilingüe ES/EN, con django-tinymce para edición rica) que permiten personalizar logo, textos y secciones enteras sin tocar código. Prepara la plataforma para modo marca blanca por empresa operadora.

  • Lógica de negocio en services.py. Vistas y endpoints de API orquestan, no contienen lógica. Esto facilita testear cada operación de negocio de forma aislada.

  • Firma digital preparada desde la Fase 1. Los modelos de documentos llevan metadatos de firma nullables desde el origen, para que la integración real con un proveedor cualificado (eIDAS) en la Fase 8 no obligue a reestructurar nada.

  • Bilingüe desde el origen. django-modeltranslation para catálogos, normativa y contenido editable; templates con etiquetas {% trans %} y LocaleMiddleware. Catálogo de traducción sin cadenas dudosas.

  • Calidad enforced en CI, no en buenas intenciones. 129 tests pasando con 71% de cobertura, suelo fail_under=70 enforced en CI, tests independientes del idioma (aserciones sobre códigos de error estables, no sobre texto traducible), auditoría automática de dependencias con pip-audit y Dependabot.

  • Decisiones documentadas como ADRs (Architecture Decision Records) en docs/adr/, para que el "por qué" de cada decisión arquitectónica sobreviva al "qué".

Hoja de ruta y estado actual

Mantenova V2 se desarrolla en nueve fases (0–8) con criterios objetivos de finalización para cada una. Estado a fecha de publicación de esta ficha:

  • Fase 0 — InfraestructuraCompleta. Docker Compose multi-entorno, configuración por entorno (base, dev, staging, prod, test), Dockerfile, Nginx, Gunicorn, Makefile estandarizado replicable entre proyectos, GitHub Actions (ruff + pytest + pip-audit + Dependabot), suelo de cobertura fail_under=70, Celery + Redis operativos, pytest con factories.

  • Fase 1 — Modelos coreCompleta. 60 modelos en 14 apps Django, catálogos sembrados (25 tipos de instalación, 34 tipos de inspección, 120 combinaciones) verificados contra normativa vigente, modelos específicos por tipo, sistema de permisos base, mensajería, notificaciones (15 tipos), normativa, documentos con preparación para firma digital, internacionalización con django-modeltranslation.

  • Fase 2 — Lógica de negocioCompleta. services.py por app con todas las operaciones de negocio (solicitar inspección, aceptar, rechazar, iniciar, completar, cancelar, calcular próxima, dar de baja instalación o inspector), managers personalizados, mixins de permisos para CBV, validaciones de transición de estado, señales de auditoría, validación anti-IDOR.

  • Fase 3 — API RESTCompleta. API documentada con OpenAPI/Swagger, autenticación, marketplace, endpoints alineados con los services, tests de seguridad propios.

  • Fase 4 — Vistas y templates 🔶 En curso. Cerrado: design system implementado en CSS (tokens, base, pages), plantillas base, vistas de autenticación, páginas públicas completas con contenido editable (SiteConfig + ContentBlock + django-tinymce), conmutador de idioma. Pendientes: dashboards por rol, paneles CRUD por tipo de usuario, búsqueda marketplace, formularios completos, tests de vistas.

  • Fase 5 — Frontend pulido y componentesPendiente. Componentes UI especializados, calendario inspector, mensajería en tiempo real, micro-interacciones.

  • Fase 6 — Tareas asíncronasPendiente. Carga periódica de noticias del sector, scraping de normativa con alertas, notificaciones automáticas de vencimiento, emails transaccionales, backups programados, generación de informes en PDF.

  • Fase 7 — Despliegue y producciónPendiente. Compose de producción endurecido, scripts de despliegue, SSL, monitorización, hardening de seguridad y cumplimiento RGPD (política de privacidad, gestión de consentimiento, derecho al olvido).

  • Fase 8 — Firma digital y validez legalPendiente. Selección de proveedor (Viafirma, Signaturit, AutoFirma), integración con TSA para sello de tiempo, verificación de cumplimiento eIDAS, tests de firma y verificación. La arquitectura de datos está preparada desde la Fase 1 para que esta integración no obligue a reestructurar nada.

Cobertura acumulada de calidad: 129 tests pasando, 71% de cobertura, suelo fail_under=70 enforced en CI, auditoría de dependencias automática, decisiones registradas como ADRs.

El proyecto se mantiene en repositorio privado en GitHub con CI/CD activo en cada push. Para acceder al código o solicitar más detalles, usa el botón Solicitar Info.

¿Te interesa este proyecto?

Si deseas más información técnica, documentación adicional o discutir una colaboración, no dudes en contactarme.

Solicitar información