Aitor Nain Mendoza Vallejo (naindev)
Madrid, Spain • Full Stack Software Architect • CTO at Contrast3D x NainDev
I am a full stack software architect with a backend focus. I specialize in critical systems, trustworthy AI, and deterministic conformance: architectures that validate products of any domain against explicit, versioned specifications, starting with 3D assets.
I deliver the complete product (data model, backend, and frontend) and integrate AI through human-in-the-loop MCP tooling, on Open Core architectures with clean code and immutable contracts.
What I bring to a team or client:
- Python and .NET at the same level. Python (FastAPI, Pydantic v2) for AI, validation, data, and 3D. .NET (ASP.NET Core) for business APIs and Microsoft-based clients.
- End-to-end ownership. PostgreSQL or SQL Server schemas, async APIs, accessible Vue 3 frontends (WCAG 2.2 AA), CI/CD, and deployment on Linux VPS or Azure.
- Verifiable delivery. Spec-driven development, property-based testing, and traceability from each requirement to the test that proves it.
- Legacy modernization. Maintenance, security hardening and incremental modernization of critical .NET Framework backends without stopping the business.
My main work is not public. The first two systems I lead under my NainDev brand, outside working hours; the third is my full-time role as a .NET developer in the insurance sector. They are listed in order of focus and described by architecture and stack only:
-
Multi-Domain Deterministic Conformance Chassis (Open Core): Python 3.12 (
uvmonorepo), FastAPI, Pydantic v2, PostgreSQL, Model Context Protocol (MCP), pytest & Hypothesis, Docker, self-hosted CI.- Architecture: A domain-agnostic conformance chassis that receives an artefact, identifies what it is, measures facts about it, proposes the objectives and profile that apply, validates it, directs its fail-closed correction, and emits a verdict that is reproducible byte-for-byte. Each market domain plugs in as a versioned profile from a frozen, persisted catalogue; the catalogue version is recorded in every verdict.
- First profile, in production: Real-time 3D assets (glTF/GLB). Binary stream parsing and byte-level container validation (IEEE-754 little-endian chunk extraction), exact computational geometry invariants (2D UV winding, polygon clipping, watertight manifold verification, differential texel density scaling), and a validate → repair → revalidate loop.
- Next profile, specified: Tabular fiscal documents (invoice arithmetic, mandatory legal fields, and tax ID check-digit algorithms), which proves the same engine works outside 3D.
- Delivery: Reproducible dual-contract audit reports (canonical JSON + human-readable Markdown), an HTTP service with OpenAPI, PostgreSQL persistence for stateful validation sessions, and stdio MCP tooling so AI agents run validations under human oversight.
-
High-Concurrency Multi-Tenant Operations & Commercial Platform: Python 3.12, FastAPI, PostgreSQL, async SQLAlchemy, Alembic, Vue 3, TypeScript, Pinia, Tailwind CSS, Web Push (VAPID), Docker.
- Core capabilities: Zero-data-loss collaboration using entity
versiontracking and field-level merge resolution on HTTP 409 conflicts. Data integrity enforced by PostgreSQL primitives (citext, partial unique indexes, and atomicactivity_eventsaudit logging within single transactions). Accessible frontend (WCAG 2.2 AA, TipTap rich text, interactive 3D model viewers) and near-zero compute cost on self-hosted environments backed by local CI runner fleets.
- Core capabilities: Zero-data-loss collaboration using entity
-
Insurance-Sector Backend & Legacy .NET Modernization (full-time role): C#, .NET Framework, ASP.NET MVC 5, ASP.NET Web API 2, SQL Server, Dapper, Azure Storage, layered architecture.
- Core capabilities: RESTful APIs for insurance policy management and risk scoring. Maintenance, security hardening, and incremental modernization of mission-critical business backends. Integration layer orchestrating multiple third-party enterprise providers (payment gateways, digital signature APIs, financial scoring services, cloud storage, and automated transactional document generation).
Open-source projects with source code and automated tests. Live demos where available:
| Project | Stack | What it demonstrates | Links |
|---|---|---|---|
| ParametriCAD AI | Python 3.12, FastAPI, OpenCASCADE, CadQuery, Three.js, React 19, TypeScript, Docker | Deterministic CAD engine and 3D web viewer. Builds exact B-Rep solids, verifies mesh topology (watertightness, 2-manifoldness, outward normals), and exports GLB, glTF, STEP, STL, and DXF with SHA-256 content addressing. Property-based tests with Hypothesis. | Live app Source |
| Insurance Policy Operations API | .NET 10, C#, EF Core 10, SQL Server, Azure | Policy lifecycle engine. State transitions (Draft -> Active -> Cancelled), per-organization isolation, JWT roles, and optimistic concurrency with rowversion, ETag, and If-Match. Synthetic data only. |
Live Swagger Source |
| TAI Civil Service Exam Simulator | .NET 10, C#, Dapper, PostgreSQL, React 19, TypeScript | Assessment system. Server-side marking with the official INAP scale (+1 / -0.33 / 0), HttpOnly cookie sessions with CSRF protection, and a web client with an offline queue. | Live demo API source Client source |
| NainOrder | .NET 10, C#, ASP.NET Core, EF Core, SQLite, xUnit | E-commerce order engine. Clean Architecture, tactical DDD, and read-side CQRS; stock reserved in the same transaction as the order, optimistic concurrency (409), and RFC 7807 errors. | Live API Source |
| Notifications Microservice | .NET 10, C#, MassTransit, RabbitMQ, Docker | Asynchronous email dispatch. HTTP gateway separated from the worker, Outlook-safe templates, PII masking in logs, rate limiting, and scale-out with RabbitMQ workers. | Source (Docker demo) |
| Driving School Billing Engine | Python 3.12, Pydantic v2, SQLAlchemy, SQLite, Streamlit | Deterministic billing. Decimal amounts with explicit rounding, totals that reconcile with no tolerance, and DNI/NIE check-letter validation. | Live demo Source |
| NainConfigurator | C#, ASP.NET Core, React, TypeScript, SQL Server | Catalog-driven B2B product configurator. Multi-company isolation, server-side validation and pricing, and a full quote flow even without the 3D viewer. Technical demo in preparation. | Source |
| Orbe Runner 3D | TypeScript, Three.js, Web Audio, Vite, Vitest | 3D arcade runner without a game engine. Custom ECS, procedural models and audio, and levels checked for reachability before they are built. | Play Source |
| Pong Arcade 3D | TypeScript, Three.js, Web Audio, Vite | 3D browser game. Continuous collision detection, fixed-step simulation with render interpolation, and matches reproducible from a seed. | Play Source |
| GameHaven | .NET 10, C#, Blazor WebAssembly, SQLite | Training project. Indie game store with its own API, evolved from an earlier desktop version. | Live store Source |
| HaveTickets | .NET 10, C#, Blazor WebAssembly, ASP.NET Core | Training project, in development. Support ticketing system with a Minimal API. | Source |
| Area | Default choice | Also used |
|---|---|---|
| Languages | Python, C#, TypeScript, SQL | |
| Backend (Python) | FastAPI, Pydantic v2, async SQLAlchemy, Alembic | Streamlit, OpenCASCADE / CadQuery |
| Backend (.NET) | ASP.NET Core Web API, Clean Architecture, EF Core, Dapper for heavy reads | .NET Framework, ASP.NET Web API 2 / MVC 5, stored procedures |
| Frontend | Vue 3, TypeScript, Pinia, Vite, Tailwind CSS, Astro | React 19, Three.js / WebGL, Razor + jQuery |
| Data | PostgreSQL, SQL Server | SQLite, Redis |
| AI integration | Model Context Protocol (MCP), human-in-the-loop workflows, fail-closed contracts | Local LLMs (Ollama) |
| Testing | pytest + Hypothesis, xUnit v3, Vitest + Playwright, Testcontainers | NUnit |
| Infrastructure | Docker / Compose, GitHub Actions (self-hosted runners), Linux VPS, Azure | RabbitMQ / MassTransit |
+-----------------------------------------------------------------------------------+
| Presentation |
| Vue 3 + TypeScript (WCAG 2.2 AA) | Astro | Three.js / WebGL 3D viewers |
+-----------------------------------------+-----------------------------------------+
| OpenAPI contracts
+-----------------------------------------v-----------------------------------------+
| Application |
| FastAPI | ASP.NET Core | MCP tools with human-in-the-loop approval |
+-----------------------------------------+-----------------------------------------+
|
+-----------------------------------------v-----------------------------------------+
| Domain |
| Deterministic invariants | Immutable contracts (Pydantic v2 / C# records) |
+-----------------------------------------+-----------------------------------------+
|
+-----------------------------------------v-----------------------------------------+
| Infrastructure |
| PostgreSQL | SQL Server | Docker | GitHub Actions | Linux VPS | Azure |
+-----------------------------------------------------------------------------------+
- Spec-driven development: Every change starts in a specification (charter, EARS requirements, architecture with Mermaid diagrams, data model, ADRs, and traceability), never directly in code.
- Nothing claimed without a test: Business rules and geometric invariants are covered by automated and property-based tests. A requirement without a test is not done.
- Strict layer boundaries: The frontend presents and the backend decides. Business logic lives in the domain and services; data access lives only in repositories.
- Immutable public contracts: APIs, schemas, and reports are versioned contracts. Breaking changes are explicit and documented.
- Human-in-the-loop AI: AI agents act through MCP tools with deterministic checks and human approval, and fail closed when uncertain.
- Open Core and cost awareness: Free and open-source tooling for demos and proofs of concept; production costs are evaluated against each product's business model.
Open to part-time, remote projects in software architecture, backend engineering, legacy .NET modernization, and deterministic conformance systems:
- Portfolio: www.naindev.com
- Email: contact@naindev.com
- LinkedIn: Aitor Nain Mendoza Vallejo



