Seiten
Inhalt
xpulse-web – v1 → v2 Migrationskonzept
Status: ABGESCHLOSSEN · April 2026 Beschreibt den Weg von der statischen xpulse-web v1.0.0 zur komponentenbasierten v2.0.0 auf Basis des @xpulse/* Package-Stacks.
Ausgangslage: v1.0.0 (WAR)
xpulse-web v1.0.0 war eine vollständig statische Website:
| public/ |
| index.html ← alle Styles inline, translations.js als Script |
| privacy/index.html |
| terms/index.html |
| disclaimer/index.html |
| contact/index.html |
| imprint/index.html |
| status/index.html |
| assets/ |
| translations.js ← monolithisches i18n System (Strings + Engine + Dropdown-CSS) |
| favicon.svg |
Deployment: nginx Container hinter Traefik – kein Node.js Server.
Ergebnis: v2.0.0 (IST)
xpulse-web v2.0.0 läuft auf einem Node.js Server und baut vollständig auf dem @xpulse/* Package-Stack auf.
| src/ |
| index.js ← app.init() → app.start() → app.stop() |
| controllers/ |
| index.js ← GET / |
| privacy.js |
| terms.js |
| disclaimer.js |
| contact.js |
| imprint.js |
| status.js |
| templates/ |
| shared/ |
| base.tpl.html ← gemeinsames Shell-Template |
| platform.tpl.html ← Landing (extends shared/base) |
| privacy.tpl.html ← (extends shared/base) |
| terms.tpl.html |
| disclaimer.tpl.html |
| contact.tpl.html |
| imprint.tpl.html |
| status.tpl.html |
| translations/ |
| de/ |
| platform.footer.json |
| platform.index.json |
| platform.privacy.json |
| platform.terms.json |
| platform.disclaimer.json |
| platform.contact.json |
| platform.imprint.json |
| platform.status.json |
| en/ |
| (identische Struktur) |
| themes/ |
| web.css ← Layout-CSS, verwendet --xpulse-* Tokens |
| public/ |
| assets/ |
| favicon.svg |
| status/ |
| status.json.example ← Vorlage für Server-seitige status.json |
Was sich geändert hat
| Thema | v1 | v2 |
|---|---|---|
| Server | nginx static | Node.js (@xpulse/http) |
| Routing | Dateisystem-Pfade | @xpulse/controller Auto-Discovery |
| Templates | HTML-Dateien mit inline CSS | @xpulse/template (extends/slots) |
| i18n | Client-seitig, translations.js, data-i18n Attribute | SSR via @xpulse/i18n, {% t('key', _route) %} |
| Sprach-URLs | Keine | /de/, /en/ Prefix (automatisch via i18n) |
| Design System | CSS inline wiederholt | @xpulse/theme – CSS Tokens + Switcher |
| Status-Seite | window.__xpRenderStatus Hack |
SI-Objekt mit SSR-gerenderten Strings |
Was gleich geblieben ist
| Was | Warum |
|---|---|
URL-Struktur (/privacy/, /terms/ etc.) |
SEO, bestehende Links |
| Client-seitige Health-Checks in Status-Seite | Bewährt, kein Mehrwert in Server-Side für v2 |
localStorage Key xpulse_lang |
Konsistenz zwischen Chat und Web |