↑ ↓ to move · Enter to open · Esc to closeTap a result

Showcase · nerviz-ai/bank-app

Banking Backend, one use case at a time

A clean-architecture-single-module project generated and developed only with Nerviz. Every spec, every run report and every commit is public.

  1. generation/init-project

    clean-architecture-single-module, 20 minutes, green build.

    Open on GitHub →
  2. UC-001create-customer

    The first approved spec, with one partial per layer.

    Open on GitHub →
  3. UC-002prune-expired-idempotency-keys

    @Scheduled without ShedLock, decided by jobs-architect: the delete partitions work across replicas.

    Open on GitHub →
  4. UC-003get-customer

    A public read, recorded in the spec as an explicit accepted risk.

    Open on GitHub →
  5. UC-004initiate-kyc-verification

    The first Kafka producer, with outbox, relay and prune.

    Open on GitHub →
  6. UC-005record-kyc-verdict

    310 tests, 0 failures, 96.7% line coverage, 50 minutes.

    Open on GitHub →
  7. UC-006anonymize-customer

    A DELETE that anonymizes the customer and keeps the row and its id. It brings the project's first security filter chain: only the DATA_PROTECTION_OFFICER role may call it.

    Open on GitHub →
bank-app opened as is in the IDE
UC-005: the executor's final report
UC-006: /new-feature, from the prompt to the approved spec, waits cut
UC-006: /new-feature-implement, group by group, waits cut
§ the project's CI

Every push tested, from the first commit

build.yml came with the /init-project scaffold and changed twice since. 54 runs since 2026-10-06: 51 green, 3 red. Count of 2026-10-15.

  • 51green runs out of 54, every one on GitHub Actions
  • 367tests in the latest run: 287 unit and 80 integration, up from 5 in the scaffold
  • 15boundary rules; doctor gate swept 203 source files against them in the latest run

build.yml, step by step

What each step checks, in the order the latest run went through it. Two jobs run in parallel; any step that fails turns the push red.

Step 1 / 12both jobs0s → 5s in the latest run

The trigger

on: push · pull_request · workflow_dispatch

Every push to main, every pull request, and a manual dispatch. Both jobs start together, each on its own ubuntu-latest.

Tests, run by run

Each bar is one build.yml run, in the order it ran. Its height is the tests Maven reported, unit plus integration. The jumps are the use cases.

  • passed
  • ✕failed
  • ◆build.yml · changed
100200300
  1. UC-001
  2. UC-004
  3. UC-005
  4. UC-006
All 54 runs as a table
When (UTC)CommitTestsTimeResult
2026-10-06 15:56f5eaf3b chore: initial project scaffold — clean-architecture-single-module, m…5 (2 unit · 3 integration)1m30s✓ passed
2026-10-06 16:341a8432a docs: show the app starting and passing verify in the README5 (2 unit · 3 integration)1m09s✓ passed
2026-10-06 16:35523bcc3 docs: show the app starting and passing verify in the README5 (2 unit · 3 integration)1m12s✓ passed
2026-10-06 16:38f561bb0 Merge pull request #1 from nerviz-ai/docs/readme-run-gifs5 (2 unit · 3 integration)53s✓ passed
2026-10-06 16:41dd2dd2b docs: describe the CI pipeline and what it covers in the README5 (2 unit · 3 integration)57s✓ passed
2026-10-06 16:48badb714 Merge pull request #2 from nerviz-ai/docs/readme-ci-pipeline5 (2 unit · 3 integration)58s✓ passed
2026-10-07 09:0224558a5 docs(UC-001-create-customer): approved spec5 (2 unit · 3 integration)1m02s✓ passed
2026-10-07 09:08d62c8d4 commit audit-usage5 (2 unit · 3 integration)1m03s✓ passed
2026-10-07 10:240e74c8c feat(UC-001-create-customer): create customer with idempotent POST /a…113 (98 unit · 15 integration)1m56s✓ passed
2026-10-07 10:259861ede commit audit-usage113 (98 unit · 15 integration)1m53s✓ passed
2026-10-07 10:49651b779 ci: run SonarQube Cloud analysis on nerviz-ai_bank-app113 (98 unit · 15 integration)2m25s✓ passed
2026-10-07 10:56249c4fa docs: add SonarQube Cloud badges and public report link to README113 (98 unit · 15 integration)2m20s✓ passed
2026-10-07 11:06d7b62a3 chore(arch): adopt nerviz v0.17.8 and gate CI on doctor113 (98 unit · 15 integration)2m17s✓ passed
2026-10-07 12:3331fc27c updating readme113 (98 unit · 15 integration)1m36s✓ passed
2026-10-07 20:43940e578 report issue113 (98 unit · 15 integration)2m32s✓ passed
2026-10-07 23:13a59c52c arch-update113 (98 unit · 15 integration)1m58s✓ passed
2026-10-07 23:252da91cd arch-update113 (98 unit · 15 integration)2m18s✓ passed
2026-10-08 00:537c4e714 arch-update137 (117 unit · 20 integration)2m11s✓ passed
2026-10-08 01:061c966b0 chore: arch-update137 (117 unit · 20 integration)2m04s✓ passed
2026-10-08 08:517985d5d chore(arch): update .claude to nerviz v0.20.0137 (117 unit · 20 integration)2m12s✓ passed
2026-10-08 11:343061f71 arch-update137 (117 unit · 20 integration)2m08s✓ passed
2026-10-08 12:006e57955 chore(arch): update .claude to nerviz v0.22.0137 (117 unit · 20 integration)2m10s✓ passed
2026-10-08 12:240f96c8b chore: commit changes from before this run149 (126 unit · 23 integration)2m11s✓ passed
2026-10-08 12:264fae2c3 audit-usage149 (126 unit · 23 integration)2m09s✓ passed
2026-10-08 13:285068ff2 audit-usage149 (126 unit · 23 integration)2m01s✓ passed
2026-10-08 13:38b3c4896 build(sonar): align coverage exclusions with JaCoCo gate149 (126 unit · 23 integration)3m06s✓ passed
2026-10-08 22:1471015af docs(UC-004-initiate-kyc-verification): approved spec149 (126 unit · 23 integration)2m07s✓ passed
2026-10-08 22:198be721f audit-usage149 (126 unit · 23 integration)2m16s✓ passed
2026-10-09 00:297bc5c8f feat(UC-004-initiate-kyc-verification): initiate KYC verification via…260 (211 unit · 49 integration)2m48s✓ passed
2026-10-11 13:0531ff9e0 docs: bring README in line with the current build and CI260 (211 unit · 49 integration)2m32s✓ passed
2026-10-11 13:1308773e6 Merge pull request #3 from nerviz-ai/docs/readme-current-state260 (211 unit · 49 integration)2m25s✓ passed
2026-10-11 15:121fcda1f audit-usage260 (211 unit · 49 integration)2m31s✓ passed
2026-10-11 15:1413484e7 chore(arch): update .claude to nerviz v0.23.0260 (211 unit · 49 integration)2m12s✓ passed
2026-10-11 23:124fe0f0d chore(arch): update .claude to nerviz v0.25.1 and apply single-module…260 (211 unit · 49 integration)2m40s✓ passed
2026-10-12 14:49be62511 feat(UC-005-record-kyc-verdict): record KYC verdict on customer294 (235 unit · 59 integration)2m09s✕ failed
2026-10-12 15:230079e7c audit-usage294 (235 unit · 59 integration)2m25s✕ failed
2026-10-12 16:00ba4f5ad gifs294 (235 unit · 59 integration)2m36s✕ failed
2026-10-12 16:06a28934c chore(arch): update .claude to nerviz v0.25.3 and pass stop-gate-runs…294 (235 unit · 59 integration)2m48s✓ passed
2026-10-12 21:30076f6f1 chore(arch): update .claude to nerviz v0.26.0294 (235 unit · 59 integration)3m24s✓ passed
2026-10-12 21:5527e2456 chore(arch): update .claude to nerviz v0.27.0294 (235 unit · 59 integration)3m20s✓ passed
2026-10-12 23:4479fe59c chore(arch): update .claude to nerviz v0.28.0294 (235 unit · 59 integration)2m41s✓ passed
2026-10-13 00:129423b11 docs(UC-006-anonymize-customer): approved spec294 (235 unit · 59 integration)2m52s✓ passed
2026-10-13 00:51d1527eb audit-usage294 (235 unit · 59 integration)3m24s✓ passed
2026-10-13 01:068e8bf56 chore(arch): update .claude to nerviz v0.29.0294 (235 unit · 59 integration)3m34s✓ passed
2026-10-13 01:086037ed3 chore(audit-usage): remove stale report citing deleted UC-004-initiate294 (235 unit · 59 integration)3m08s✓ passed
2026-10-13 09:5902c4c17 feat(UC-006-anonymize-customer): anonymize a customer via DELETE /api…355 (276 unit · 79 integration)3m56s✓ passed
2026-10-13 10:216b55699 feat(UC-006-anonymize-customer): add local Keycloak service to docker…355 (276 unit · 79 integration)3m03s✓ passed
2026-10-13 15:1780564c1 build(sonar): exempt java:S4502 on SecurityConfig355 (276 unit · 79 integration)4m09s✓ passed
2026-10-13 22:1445fc2bb refactor(api): move REST versioning to native API versioning359 (280 unit · 79 integration)3m26s✓ passed
2026-10-14 12:48eb89105 chore: update .claude to nerviz v0.34.0 and apply its migrations360 (281 unit · 79 integration)3m16s✓ passed
2026-10-14 17:377a5c534 chore: commit pending changes366 (287 unit · 79 integration)3m17s✓ passed
2026-10-14 19:583187bac chore(arch): update .claude to nerviz v0.35.0366 (287 unit · 79 integration)3m22s✓ passed
2026-10-15 09:02c0047d8 chore(arch): update .claude to nerviz v0.36.0366 (287 unit · 79 integration)3m18s✓ passed
2026-10-15 21:16a3cc28a chore: commit pending changes367 (287 unit · 80 integration)3m40s✓ passed
All bank-app runs →
§ code quality

AI-generated code CAN have QUALITY too

Every push to main sends the code to SonarQube Cloud, in the CI's sonar analysis step. The report is public: below, its live badges, and a snapshot of the latest analysis.

Live, from SonarQube CloudOpen the full report →
SonarQube Cloud · alert_statusSonarQube Cloud · coverageSonarQube Cloud · bugsSonarQube Cloud · vulnerabilitiesSonarQube Cloud · code_smellsSonarQube Cloud · duplicated_lines_densitySonarQube Cloud · reliability_ratingSonarQube Cloud · security_ratingSonarQube Cloud · sqale_ratingSonarQube Cloud · ncloc

These badges are drawn by SonarQube Cloud on every page load. SonarQube Cloud does not allow its report inside another site's frame, so the full report opens there. Analysis of 2026-10-24 23:26 UTC, commit 948c8dc.

Quality gate: Sonar way, passed

Sonar way is SonarQube Cloud's default gate. It judges the new code, here everything since the previous version (2026-10-07), on six conditions:

  1. Reliability ratingnew_reliability_ratingArequired ≤ A
  2. Security ratingnew_security_ratingArequired ≤ A
  3. Maintainability ratingnew_maintainability_ratingArequired ≤ A
  4. Coveragenew_coverage96.5%required ≥ 80%
  5. Duplicated linesnew_duplicated_lines_density0.0%required ≤ 3%
  6. Security hotspots reviewednew_security_hotspots_reviewed100%required = 100%

The whole code base

  • 0open issues0 reliability · 0 security · 0 maintainability
  • 0security hotspots to review
  • 0.0%duplicated lines
  • 0 mintechnical debt

3,946 lines of code in 142 files

Coverage, against the CI's floor

In the CI, jacoco:check fails the build below 80% of lines or 70% of branches. SonarQube Cloud reads the same JaCoCo report.

  • linesCI floor 80%96.4%
  • branchesCI floor 70%88.8%