SPA React + TypeScript (PWA) servida des del JAR

Generat automàticament des de docs/adr/0002-spa-react-embeguda.md. No editis aquest fitxer directament.

Estat: Acceptat · Data: 2026-09-04

Context

Cal una UI web moderna, usable des del mòbil (PWA instal·lable, offline a la botiga) i reutilitzable per a futurs clients Android i escriptori, sense necessitar Node ni un segon contenidor en producció.

Opcions

OpcióProsContres
React + Vite + TSEcosistema màxim (components, TanStack Query), bona generació per agents de codi, Capacitor/TauriBundle mitjà, més boilerplate
Vue 3Corba suau, molt productiu en solitariEcosistema menor
Svelte 5Bundle mínimEcosistema petit, runes recents
AngularTot inclòsPesat per a aquest abast
Thymeleaf + htmxZero build JSNo reutilitzable per a Android; offline pobre
Flutter / Compose MultiplatformUn codi per a totWeb pesat/immadur; fora de l’ecosistema web

Decisió

React 19 + TypeScript strict + Vite, com a PWA (vite-plugin-pwa). El build (dist/) s’empaqueta en el mòdul Maven frontend com a recurs static/ i Spring Boot el serveix amb fallback a index.html per a rutes de la SPA. En desenvolupament, Vite fa proxy de /api al backend.

Conseqüències

  • Un sol artefacte (JAR) i una sola imatge Docker.
  • Cap lògica de negoci al frontend: tot passa per l’API (vegeu ADR 0004).
  • La mateixa SPA s’embolcallarà amb Capacitor (Android) i Tauri (escriptori) a la Fase 4.
  • El build de Maven inclou npm ci && npm run build (frontend-maven-plugin); -Dskip.frontend per iterar només backend.