Software & Systems February 2025

Mantenova

Mantenova

B2B SaaS platform for end-to-end management of regulatory technical inspections and industrial maintenance. Connects facility-owning companies with inspection firms, automates regulatory deadline tracking, and centralizes all documentation in a single system.

Technologies

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

Roles

Business analysis domain modeling software architecture database design backend development frontend development UI/UX design design system DevOps (Docker CI/CD) testing (TDD) internationalization phase-based planning.

Results and Achievements

  • Modular architecture on dynamic catalogs: 25 facility types and 34 inspection types managed from the database, with 120 facility–inspection combinations. Adding a new type requires no code changes or deployments.

  • Role-based permission system with explicit overrides: five roles (root, owner-side representative, facility manager, inspection-side representative, inspector) with default access defined by role, extensible per resource via PermissionOverride. Overrides extend, never restrict.

  • REST API documented with OpenAPI/Swagger (drf-spectacular), ready to power the PWA and future integrations.

  • Automatic alert engine prepared to notify 30, 15, and 7 days before inspection expiry, with in-app notifications and opt-in email.

  • Preparation for qualified digital signatures (eIDAS) from the data layer: nullable metadata fields integrated in Phase 1 to avoid restructuring when the provider is contracted in Phase 7.

  • Multi-environment Docker infrastructure (dev, staging, prod) with web, postgres, redis, celery worker, and celery beat services; CI/CD on GitHub Actions (ruff + pytest).

  • Progressive test coverage: 215 tests passing at the close of Phase 3 (models, business logic, API), with TDD applied phase by phase.

  • ES/EN internationalization from the start with django-modeltranslation (catalogs, regulations, editable content).

  • Custom visual identity and design system: logo, palette, typography, and CSS tokens defined before touching the templates layer.

  • Project rooted in direct industry experience in the industrial electrical sector: facility types, periodicities, and workflows are modeled on verified real needs, not assumptions.

  • Mantenova addresses a problem observed first-hand in the Spanish industrial sector: managing regulatory technical inspections and the associated documentation still largely relies on spreadsheets, scattered emails, and phone calls — despite involving processes with strict legal deadlines and real economic and safety consequences.

  • The platform provides a unified space where facility-owning companies (transformer stations, photovoltaic plants, industrial warehouses, offices, retail premises, petroleum facilities, refrigeration plants, pressure equipment, cranes, ATEX installations, etc.) manage their assets and coordinate inspections with registered technical inspection firms, which in turn manage their inspectors, work zones, and schedules. An automatic alert engine notifies before each inspection expires, contextual messaging keeps conversations linked to the relevant resource, and document management is prepared from the data layer for qualified digital signatures and legal validity.

  • Current status: V2 in active development. V1 was delivered in 2025 as the final project of the Advanced Vocational Training in Web Application Development. V2 is a complete rewrite with professional, modular, and tested architecture, planned across eight phases — four of which are already closed (infrastructure, models, business logic, and REST API). The phase-by-phase breakdown, decisions, and verifiable progress are detailed in the roadmap section.

The problem

In the Spanish industrial sector, the management of mandatory technical inspections still largely depends on spreadsheets, emails, and phone calls. Companies that own facilities — industrial warehouses, transformer stations, photovoltaic plants, commercial premises — must comply with dozens of periodic inspections with legal deadlines: OCA every 5 years, annual RITE, triennial ground measurement, thermography, legionella, RIPCI...

When these deadlines are managed manually, delays occur, documents get lost, communications are duplicated, and regulations go unmet. The cost isn't just financial: an expired certificate can halt operations or create legal liabilities.

Mantenova was born from direct observation of this problem in the industrial electrical sector.

The solution

Mantenova is a B2B SaaS platform that brings both sides of the process into a single system:

  • Facility-owning companies, which manage their assets, request inspections, and store all associated documentation.

  • Technical inspection firms, which manage their inspectors, define their operating zones, and receive, accept, and complete inspections.

On this foundation, the platform delivers:

  • Dynamic catalog of 25 facility types and 34 inspection types, with 120 combinations reflecting which inspections apply to each facility type and at what legal periodicity.

  • Automatic alert engine that notifies before each inspection expires.

  • Contextual messaging linked to a specific company, facility, or inspection, so conversations always have explicit reference.

  • Document management with versioning and metadata prepared for qualified digital signatures.

  • Technical regulations catalog with direct links to official sources.

  • PWA for access from any device, without dependence on app stores.

Architecture and technical decisions

V2 is built on Django 5.1, Python 3.12, PostgreSQL 16, Redis 7, and Celery, all orchestrated with Docker Compose across three environments (dev, staging, prod). The REST API is documented with OpenAPI/Swagger (drf-spectacular). The frontend is built on a custom design system (palette, typography, and CSS tokens) and delivered as a Progressive Web App.

Some architectural decisions worth highlighting:

  • Dynamic catalogs, not hardcoded enums. Facility and inspection types live in the database. Adding a new type requires no code migration or deployment: it is done from the admin panel.

  • A single inspection model + detail tables only where they add value. Instead of 34 separate models per type, there is one Inspeccion model and only 11 detail models for the types that need extra fields (OCA, earthing, RITE, RSCIEI, pressure, refrigeration, gases, APQ, cranes, legionella, tightness).

  • One Empresa model with a type field (owner or inspection), not two parallel models: simplifies relationships, reporting, and permissions.

  • Roles + explicit overrides. Five roles define default access; PermissionOverride allows extending access on specific resources without touching the role model. Overrides extend, never restrict.

  • Business logic in services.py. Views and API endpoints orchestrate, they do not hold logic. This makes each business operation testable in isolation.

  • Digital signature prepared from Phase 1. Document models carry nullable signature metadata from the start, so the actual integration with a qualified provider (eIDAS) in Phase 8 requires no restructuring.

  • Bilingual from the start. django-modeltranslation for catalogs, regulations, and editable content; templates with {% trans %} tags and LocaleMiddleware.

  • Mandatory testing phase by phase. 215 tests passing at the close of Phase 3, distributed across models, business logic, and API.

Roadmap and current status

Mantenova V2 is developed across eight phases with objective completion criteria for each one. Status as of this listing's publication:

  • Phase 0 — InfrastructureComplete. Multi-environment Docker Compose, per-environment configuration (base, dev, staging, prod, test), Dockerfile, Nginx, Gunicorn, standardized Makefile, GitHub Actions (ruff + pytest), Celery + Redis operational, pytest with factories. 11 smoke tests passing.

  • Phase 1 — Core modelsComplete. 60 models across 14 Django apps, seeded catalogs (25 facility types, 34 inspection types, 120 combinations), type-specific models, base permission system, messaging, notifications (15 types), regulations, documents with digital signature preparation, internationalization with django-modeltranslation. 43 tests passing.

  • Phase 2 — Business logicComplete. Per-app services.py with all business operations (request inspection, accept, reject, start, complete, cancel, calculate next, deactivate facility or inspector), custom managers, permission mixins for CBVs, state transition validations, audit signals. 70 tests passing.

  • Phase 3 — REST APIComplete. API documented with OpenAPI/Swagger, authentication, marketplace, endpoints aligned with services. 91 tests passing.

  • Phase 4 — Views and templates 🔶 In progress. Part 1 closed: design system implemented in CSS (tokens, base, pages), base templates, authentication views, initial public pages, language switcher. Pending: role-based dashboards, CRUD panels per user type, marketplace search, full forms, view tests.

  • Phase 5 — Asynchronous tasksPending. Periodic loading of industry news, automatic expiry notifications, transactional emails, scheduled backups, PDF report generation.

  • Phase 6 — Production deploymentPending. Hardened production compose, deployment scripts, SSL, monitoring, security hardening.

  • Phase 7 — Digital signature and compliancePending. Provider selection (Viafirma, Signaturit, AutoFirma), TSA integration for time-stamping, eIDAS compliance verification, signature and verification tests. The data architecture has been prepared since Phase 1 so this integration requires no restructuring.

Interested in this project?

If you need more technical information, additional documentation, or want to discuss a collaboration, feel free to contact me.

Request information