xPulse
πŸ‡¬πŸ‡§ EN
Pages
Contents

xpulse-web – v1 β†’ v2 Migration Concept

Status: COMPLETED Β· April 2026 Describes the path from the static xpulse-web v1.0.0 to the component-based v2.0.0 built on the @xpulse/* package stack.


Starting Point: v1.0.0 (WAS)

xpulse-web v1.0.0 was a fully static website:

public/
index.html ← all styles inline, translations.js as script
privacy/index.html
terms/index.html
disclaimer/index.html
contact/index.html
imprint/index.html
status/index.html
assets/
translations.js ← monolithic i18n system (strings + engine + dropdown CSS)
favicon.svg

Deployment: nginx container behind Traefik – no Node.js server.


Result: v2.0.0 (NOW)

xpulse-web v2.0.0 runs on a Node.js server and is built entirely on the @xpulse/* package stack.

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 ← shared 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/
(identical structure)
themes/
web.css ← layout CSS, uses --xpulse-* tokens
public/
assets/
favicon.svg
status/
status.json.example ← template for server-side status.json

What Changed

Topic v1 v2
Server nginx static Node.js (@xpulse/http)
Routing Filesystem paths @xpulse/controller auto-discovery
Templates HTML files with inline CSS @xpulse/template (extends/slots)
i18n Client-side, translations.js, data-i18n attributes SSR via @xpulse/i18n, {% t('key', _route) %}
Language URLs None /de/, /en/ prefix (automatic via i18n)
Design System CSS repeated inline @xpulse/theme – CSS tokens + switcher
Status page window.__xpRenderStatus hack SI object with SSR-rendered strings

What Stayed the Same

What Why
URL structure (/privacy/, /terms/ etc.) SEO, existing links
Client-side health checks in status page Works well, no added value in server-side for v2
localStorage key xpulse_lang Consistency between chat and web
en/concept/v1-to-v2.md 2026-04-20