Skip to content

ADR-007 — Frontend Angular separat (`clientFramework=no`)

  • Status: Acceptat
  • Data: 2026-07-07
  • Componentă: Frontend / livrare UI
  • Decidenți: Arhitect platformă GStack, teamlead

GRegistry este un microserviciu API-first (ADR-001). JDL-ul fixează clientFramework no. Există un design de referință — ../../GRegistry.dc.html — cu limbaj vizual definit (sidebar navy închis, accent sky-blue #0369a1/#0ea5e9, IBM Plex Sans, carduri) și un ecran complet (Tablou de bord), restul ecranelor fiind schițe de navigație.

UI-ul GRegistry este o aplicație Angular separată, în afara backend-ului JHipster:

  • Backend-ul nu generează client (clientFramework no) — se evită regenerarea care ar suprascrie UI-ul lucrat manual.
  • SPA-ul consumă API-ul prin contractul OpenAPI (/api/v1/openapi.json), respectând zonele standard (ADR-006).
  • Autentificare Authorization Code + PKCE contra GSSO (ADR-002).
  • Stilizat după GRegistry.dc.html: se extrag paleta, tipografia, componentele și layout-ul Dashboard-ului; ecranele lipsă (Registrul sistemelor, Medii, Dependențe, Publicare, Furnizori, API & consumatori, Jurnal) se proiectează coerent cu acel limbaj vizual.
  • i18n ro (nativ) + en, în paralel cu backend-ul.
  1. Client generat de JHipster (Angular integrat). Respins: contrazice clientFramework no din JDL și cuplează UI-ul de ciclul de regenerare a backend-ului.
  2. UI livrat exclusiv de GPortal. Respins: RSI are nevoie de un panou de administrare propriu (înregistrare, aprobări, medii, audit) dincolo de vederea publică a Portalului.
  3. Server-rendered (Thymeleaf). Respins: design-ul de referință e o SPA bogată; SSR ar însemna rescriere.

Pozitive

  • UI decuplat, cu ciclu de release propriu; regenerarea backend-ului nu-l atinge.
  • Contract clar backend↔frontend prin OpenAPI.

Negative / riscuri

  • Două artefacte de livrat/deploy (backend + SPA); necesită CORS/gateway configurate.
  • Ecranele ne-desenate în mock trebuie proiectate — se urmează strict limbajul vizual al Dashboard-ului pentru consistență.
  • Design: ../../GRegistry.dc.html
  • Model: ../../GRegistry.jdl (clientFramework no)
  • Depinde de: ADR-002, ADR-006