2014 → University Project2026 → AI-Powered

The Story ofNotaire

From a Java Swing university project in 2014 to a modern, AI-accelerated microservices platform— a decade of evolution, one commit at a time.

Scroll to discover

Project History

A Decade of Evolution

From dormant Swing monolith to AI-accelerated microservices — every commit tells a story.

March 20147 commits

The Origin

University Project

A Java Swing monolith born as a university notarial management system. Direct DB access, JDBC queries embedded in UI event handlers, tightly coupled business logic.

Java 1.6Java SwingMySQLJDBC
14
💤
Dormancy 2015–20185 commits

Years of Silence

Project Paused

The project entered a long dormancy. Real-world complexity exceeded the scope of an academic exercise. The code slept, but the vision remained.

Frozen in time
18
🌱
December 202514 commits

The Renaissance

Modern Reboot

A decade later, the project was reborn. Java 21, Spring Boot 3.2.9, Docker, PostgreSQL. The monolith began its transformation into a proper microservices architecture.

Java 21Spring Boot 3.2.9PostgreSQL 16Docker
25
February 202639 commits

API & Frontend

Next.js Migration

REST API layer solidified. The Swing GUI was retired, replaced by a modern Next.js 15 + React 19 + TypeScript frontend with a proper design system.

Next.js 15React 19TypeScriptTailwind CSS
26
🤖
March–April 2026226 commits

AI Acceleration

Claude Code Integration

AI-assisted development became the primary workflow. 226 commits in two months. Tests, E2E coverage, security audits, observability—all accelerated by Claude AI agents.

Claude AIPlaywrightJaCoCoPrometheus
26
🚀
May–June 2026236 commits

Production Ready

Observability & Security

Grafana dashboards, Prometheus alerts, Loki log aggregation, SonarQube quality gates. A 2014 university project became a production-grade platform.

GrafanaLokiSonarQubeSpring Boot 4.0
26

Tech Evolution

Three Generations

The same business domain, reimagined through each era of software engineering.

2014
The Monolith
// 2014 — Everything in one place
class NotaireForm extends JFrame {
  private Connection conn;

  void saveDocument() {
    // Direct SQL from event handler
    PreparedStatement ps = conn.prepareStatement(
      "INSERT INTO escrituras VALUES(?,?,?)"
    );
    ps.setString(1, txtNombre.getText());
    // business logic tangled in UI
  }
}
Java 1.6🖥️ Swing GUI🗄️ MySQL🔌 JDBC
2025
Spring Boot
// 2025 — Clean separation
@RestController
@RequestMapping("/api/v1/escrituras")
public class EscrituraController {

  @Autowired
  EscrituraService service;

  @PostMapping
  public ResponseEntity<DtoEscritura> create(
      @RequestBody @Valid DtoEscritura dto) {
    return ResponseEntity.ok(service.save(dto));
  }
}
Java 21🌱 Spring Boot 4🐘 PostgreSQL 16🐳 Docker
2026
AI-Powered
// 2026 — AI-accelerated development
// Claude AI generates tests, reviews code,
// writes E2E tests, updates documentation

const tramite = await page.getByRole(
  'link', { name: 'Nuevo Trámite' }
);
await expect(tramite).toBeVisible();
await tramite.click();

// 500+ Playwright E2E tests
// 80% JaCoCo coverage enforced
// Grafana + Loki observability
Next.js 15🤖 Claude AI🎭 Playwright📊 Grafana

The AI Era

Built with Artificial Intelligence

In 2026, Claude AI became the primary co-developer. Not just autocomplete— full workflow automation: TDD, code review, documentation, E2E testing, and security audits.

GitHub IssueUse Case (CU-XX)Feature BranchTDDImplementationE2E TestsPR ReviewMerged
🧠

AI-Driven TDD

Claude AI writes failing tests first, implements to pass them, then refactors. Enforced by mandatory workflow rules.

🎭

Playwright E2E

500+ automated end-to-end tests covering every user flow, form, and edge case. Every PR requires passing E2E coverage.

📊

Full Observability

Prometheus metrics, Grafana dashboards, Loki log aggregation, and SonarQube quality gates. Production-grade from day one.

🔐

Security-First

OWASP Top 10 guides, JWT authentication, SQL injection prevention, Trivy vulnerability scanning in CI/CD.

📖

Living Documentation

78 use cases, 95 functional requirements, ADRs for every major decision. Documentation updated with every PR.

Accelerated Delivery

226 commits in 2 months with AI assistance. What took years of manual work now happens in sprints.

AI Arsenal

The AI Tools That Built It

Four AI tools, one codebase. Each played a different role in accelerating from idea to production.

🧠
Claude CodeCore
Anthropic

Primary AI agent — TDD, code review, E2E tests, docs, architecture decisions

~80% of AI work
⌨️
OpenCodeShell
OpenCode

Terminal-native AI coding agent, integrated directly into the shell workflow

RTK token proxy
✈️
GitHub CopilotIDE
Microsoft / GitHub

VS Code inline completions, chat, and PR summaries for rapid in-editor development

Inline completions
💎
Gemini CLIResearch
Google

Command-line Gemini access for research, alternative perspectives, and cross-validation

Cross-validation

System Architecture

Modern Microservices

From a single Java Swing file to a multi-layer containerized platform.

🌐
Frontend
Next.js 15React 19TypeScriptTailwind CSSZustand
⚙️
API Gateway
Spring Boot 4REST ControllersJWT AuthOpenAPI / Swagger
🧩
Services
Business LogicAudit AspectJasperReportsEmail Service
🗄️
Persistence
PostgreSQL 16Spring Data JPAFlyway MigrationsHikariCP
📡
Observability
PrometheusGrafanaLokiSonarQube

All layers run in Docker containers. One command to start everything.

$ bash scripts/start-all.sh

Infrastructure

DevSecOps Platform

10 containerized services. Two Docker Compose stacks. One command to run everything. From a university project with no infrastructure to a full observability platform.

🏠
Homer:8888

DevSecOps Hub — single-page dashboard linking every service

Next.js Frontend:3000

React 19 + TypeScript UI. Notarial forms, dashboards, audit trail

🌱
Spring Boot API:8080

REST API + Swagger UI. JWT auth, JasperReports, audit aspect

🐘
PostgreSQL 16:5432

Primary database. Managed by Flyway migrations + init-db scripts

🗄️
pgAdmin:5050

Database management UI for schema inspection and query execution

🔥
Prometheus:9090

Scrapes Spring Boot Actuator + PostgreSQL exporter every 10–15 s

📊
Grafana:3001

4 custom dashboards: backend, postgres, logs, auth. Real-time alerts

📋
Loki + Promtail:3100

Structured JSON log aggregation via Logback LogstashEncoder

🛡️
SonarQube:9000

SAST, code smells, coverage gating. Community Edition, auto-provisioned

📡
PostgreSQL Exporter:9187

Translates pg_stat_* to Prometheus metrics for Grafana's DB dashboard

🚀 Start Everything

$ bash scripts/start.sh

App stack (Backend + Postgres + pgAdmin)

$ bash scripts/start-infra.sh

Infra stack (Prometheus + Grafana + Loki + SonarQube)

$ bash scripts/start-all.sh

Everything at once

🔔 Active Alert Rules

HighLoginFailureRate
>50% login failures for 2 min
warning
SuspiciousLoginActivity
Brute-force: >30 bad creds/min
critical
BackendDown
API unreachable for >1 min
critical
HighJvmHeapUsage
JVM heap >85% for 5 min
warning

Trivia

Fun Facts

Numbers and moments that make this project unique.

😴

3 Years of Sleep

The project was dormant from mid-2015 to late 2018. Not a single commit. Then life happened, then AI happened.

🤯

226 commits in 60 days

March–April 2026: the most intense development sprint. AI agents wrote tests, reviewed code, and updated docs continuously.

🏆

159 / 159 PRs Merged

100% PR merge rate. Every single pull request made it in — thanks to mandatory TDD, E2E coverage, and automated quality gates.

📚

545 Markdown Files

Documentation grew from zero to 545 .md files. Use cases, ADRs, guides, runbooks, API references — all kept in sync by AI.

Java 1.6 → Java 21

15 major Java versions. From brittle Swing event handlers to records, sealed classes, and virtual threads.

🧪

Zero Tests → 80% Coverage

The original project had no tests at all. Today, JaCoCo enforces an 80% coverage ratchet and CI fails if it drops.

Battle Scars

Major Challenges

Real production incidents and architectural hurdles that shaped how the project works today.

HIGH

Schema Dual-Source Drift

Docker builds from init-db/*.sql but Flyway runs db/migration/V*.sql. Hibernate entities can drift from both. Caused recurring 500 errors until an integration test guard was added.

MED

Legacy JPA Controllers

The original monolith had massive JpaController classes (not REST controllers!) with Hibernate sessions and EntityManager leaks directly from the Swing era. Still being migrated to Spring Data repos.

MED

Hibernate Proxy & Jackson

@JsonIgnore silently fails on Hibernate proxy subclasses, causing infinite recursion in JSON serialization. Fix: use Maps/DTOs, never serialize JPA entities directly.

LOW

131 Issues Missing Use Cases

Workflow rule: every GitHub issue must reference a Use Case (CU-XX). After auditing all 233 open issues, 131 were missing this link. Batch-fixed via gh CLI scripting.

Quality Metrics

Test Coverage Dashboard

Real-time coverage metrics across backend, frontend, E2E, and API layers. Updated on every merge to main.

Backend (JaCoCo)
Instruction Coverage
↑ Increasing
Coverage0%
Updated: 2026-06-16
Backend (JaCoCo)
Branch Coverage
↑ Increasing
Coverage0%
Updated: 2026-06-16
Frontend (Jest)
Component Coverage
→ Stable
Coverage0%
Updated: 2026-06-16
E2E (Playwright)
Test Coverage
↑ Increasing
Coverage0%
Updated: 2026-06-16
API (Bruno)
Endpoint Coverage
↑ Increasing
Coverage0%
Updated: 2026-06-16

📊 Coverage by Test Type

Backend Testing

  • Unit Tests (JUnit 5)130 classes
  • Integration Tests (H2 DB)H2 + Pg
  • JaCoCo Enforcement28% floor
  • Target Coverage80%

Frontend Testing

  • Component Tests (React)3+ suites
  • E2E Tests (Playwright)28 suites
  • E2E Test Cases163 tests
  • API Tests (Bruno)86 tests

By The Numbers

A Decade of Progress

Every metric tells a story. From zero to production-grade in the AI era.

0+
Total Commits
Since Mar 2014
🔀
0
Pull Requests
100% merge rate
📋
0
Use Cases
CU-01 → CU-0
📌
0
Functional Requirements
RF-01 → RF-120
🎯
0%
Test Coverage
JaCoCo enforced
📚
0
Docs (Markdown files)
Living documentation
🧪
0
Test Classes
Unit + Integration + E2E
🐳
0
Docker Services
App + Infra stacks
📊
0
Grafana Dashboards
Custom provisioned
🤖
0
AI Tools
Claude, Copilot, Gemini, OpenCode
🏛️
0
Architecture Decisions
ADR-001 → ADR-011
👥
0
Contributors
Active development