xpulse-web β Konzept & Strategie
Status: CONCEPT v3 Β· Repo: xpulse-web
Begleitdokument: CONTENT_xpulse-web.md (Seiteninhalte)
Aktualisiert MΓ€rz 2026
Ziel & Prinzip
xpulse.one ist die Plattform. Nicht nur eine Landing Page fΓΌr den Chat,
sondern der gemeinsame Heimatort fΓΌr alle xPulse Tools, Komponenten und
plattformweite Inhalte.
chat.xpulse.one ist das erste Tool. Weitere kΓΆnnen folgen.
Single Responsibility:
chat.xpulse.one β App, UI, Kommunikation
xpulse.one β Plattform, Information, Dokumentation, Rechtliches
Die /info-Seite im Chat wird zu einem minimalen About-Screen
(Version, One-Liner, Links nach xpulse.one) β keine eigenen Inhalte mehr.
URL-Struktur
1 / { slug} β Plattform-weit (allgemein & rechtlich)2 /tool/ { tool-slug} / β Tool Landing & Tool-spezifische Inhalte3 /tool/ { tool-slug} /{ sub-slug} / β Tool-Unterseiten4 /component/ { component-slug} / β Shared Components Γbersicht5 /component/ { component-slug} /{ sub} / β Component-Unterseiten
Domain-Struktur
1 ββ Plattform ββββββββββββββββββββββββββββββββββββββββββ 2 xpulse.one/ β Plattform Landing 3 xpulse.one/about/ β Was ist xPulse (die Plattform) 4 5 ββ Tools ββββββββββββββββββββββββββββββββββββββββββββββ 6 xpulse.one/tool/ chat/ β Chat Tool Landing 7 xpulse.one/tool/ chat/guide/ β Erste Schritte (Chat-spezifisch) 8 xpulse.one/tool/ chat/security/ β Sicherheit & AnonymitΓ€t (Chat-spezifisch) 9 xpulse.one/tool/ chat/changelog/ β Chat Changelog β Version-Pill im Chat 10 11 ββ Components βββββββββββββββββββββββββββββββββββββββββ 12 xpulse.one/component/ui / β Shared UI Komponenten (TBD) 13 xpulse.one/component/ui /examples/ β Beispiele / Showcase (TBD) 14 15 ββ Rechtlich (Plattform-Basis) ββββββββββββββββββββββββ 16 xpulse.one/privacy/ β Datenschutz Plattform-Basis 17 xpulse.one/terms/ β Nutzungsbedingungen Plattform-Basis 18 xpulse.one/disclaimer/ β Haftungsausschluss Plattform-Basis 19 xpulse.one/imprint/ β Impressum 20 21 ββ Rechtlich (Tool-spezifisch) ββββββββββββββββββββββββ 22 xpulse.one/tool/ chat/privacy/ β Datenschutz-ErgΓ€nzung Chat 23 xpulse.one/tool/ chat/terms/ β Nutzungsbedingungen-ErgΓ€nzung Chat 24 xpulse.one/tool/ chat/disclaimer/ β Haftungsausschluss-ErgΓ€nzung Chat 25 26 ββ App ββββββββββββββββββββββββββββββββββββββββββββββββ 27 chat.xpulse.one/ β xPulse Chat App (p2p-chat Repo)
Rechtliches β Vererbungsmodell (Option A)
Plattform-weite Rechtsdokumente gelten als Basis fΓΌr alle Tools.
Tool-spezifische Dokumente sind ErgΓ€nzungen, keine Ersetzungen.
1 xpulse.one/privacy/ β gilt immer, fΓΌr alle Tools 2 xpulse.one/tool/ chat/privacy/ β gilt zusΓ€tzlich, nur fΓΌr Chat
Prinzip:
Plattform-Dokument: allgemeine Grundlagen, plattformweites Verhalten
Tool-Dokument: "ZusΓ€tzlich zu den Plattform-Richtlinien gilt fΓΌr xPulse Chat..."
Tool-Dokument verweist immer explizit auf das Plattform-Dokument als Basis
Nutzer mΓΌssen beide lesen β das Tool-Dokument macht das transparent
Verlinkung in der Chat-App:
Ort
Ziel
/info β Datenschutz
xpulse.one/tool/chat/privacy/ (verweist intern auf Plattform-Basis)
/info β Nutzungsbedingungen
xpulse.one/tool/chat/terms/
/info β Haftungsausschluss
xpulse.one/tool/chat/disclaimer/
/info β Impressum
xpulse.one/imprint/ (nur Plattform, kein Tool-spezifisches)
Seiten-Γbersicht
Route
Titel
Typ
Status
/
xPulse
Plattform Landing
Planned
/about/
Γber xPulse
Plattform Info
Planned
/tool/chat/
xPulse Chat
Tool Landing
Planned
/tool/chat/guide/
Erste Schritte
Tool Info
Planned
/tool/chat/security/
Sicherheit & AnonymitΓ€t
Tool Info
Planned
/tool/chat/changelog/
Changelog
Tool Info
Planned
/tool/chat/status/
Status
Tool Info
TBD
/component/ui/
UI Komponenten
Component
TBD
/privacy/
Datenschutz (Plattform)
Rechtlich
Planned
/terms/
Nutzungsbedingungen (Plattform)
Rechtlich
Planned
/disclaimer/
Haftungsausschluss (Plattform)
Rechtlich
Planned
/imprint/
Impressum
Rechtlich
Planned
/tool/chat/privacy/
Datenschutz (Chat)
Rechtlich
Planned
/tool/chat/terms/
Nutzungsbedingungen (Chat)
Rechtlich
Planned
/tool/chat/disclaimer/
Haftungsausschluss (Chat)
Rechtlich
Planned
Repo-Struktur
1 xpulse-web/ 2 docs/ 3 CONCEPT_xpulse-web.md 4 CONTENT_xpulse-web.md 5 public/ 6 index.html β Plattform Landing 7 about/ 8 index.html 9 tool/ 10 chat/ 11 index.html β Chat Tool Landing 12 guide/ 13 index.html 14 security/ 15 index.html 16 changelog/ 17 index.html 18 status/ 19 index.html β TBD 20 privacy/ 21 index.html 22 terms/ 23 index.html 24 disclaimer/ 25 index.html 26 component/ 27 ui/ 28 index.html β TBD 29 examples/ 30 index.html β TBD 31 privacy/ 32 index.html β Plattform-Basis 33 terms/ 34 index.html 35 disclaimer/ 36 index.html 37 imprint/ 38 index.html 39 assets/ 40 favicon.svg 41 icons/ 42 icon-192 .png 43 icon-512 .png 44 nginx.conf 45 Dockerfile 46 docker-compose.yml
Infrastruktur
Docker / Traefik
1 2 services: 3 web: 4 build: . 5 restart: always 6 networks: 7 - webproxy 8 - internal 9 labels: 10 - traefik.enable=true 11 - traefik.docker.network=webproxy 12 13 14 - traefik.http.routers.xpulseweb.rule=Host(`xpulse.one`) || Host(`www.xpulse.one`) 15 - traefik.http.routers.xpulseweb.entrypoints=http 16 - traefik.http.routers.xpulseweb.middlewares=https-redirect 17 18 19 - traefik.http.routers.xpulseweb-secured.rule=Host(`xpulse.one`) || Host(`www.xpulse.one`) 20 - traefik.http.routers.xpulseweb-secured.entrypoints=https 21 - traefik.http.routers.xpulseweb-secured.tls=true 22 - traefik.http.routers.xpulseweb-secured.tls.certresolver=le 23 24 - traefik.http.services.xpulseweb.loadbalancer.server.port=80 25 26 networks: 27 webproxy: 28 external: true 29 internal: 30 external: true
nginx
1 server {2 listen 80 ; 3 root /usr/share/nginx/html; 4 index index.html; 5 6 location / { 7 try_files $uri $uri / $uri /index.html =404 ; 8 } 9 }
Landingpage Layout
1 βββββββββββββββββββββββββββββββββββ 2 β β 3 β xPulse β β Logo (Serif, accent) 4 β βββββββββββββββββββββ β 5 β P2P Chat. Privat. VerschlΓΌsseltβ β Tagline (aktuell Chat-fokussiert, 6 β β spΓ€ter platform-weiter) 7 β [β Chat ΓΆffnen] β β CTA β chat.xpulse .one 8 β β 9 β βββββββββββββββββββββ β 10 β β 11 β π Ende-zu-Ende verschlΓΌsselt β β Feature Pills 12 β ⬑ Peer-to-Peer, kein Server β 13 β π΅ Keine Datenspeicherung β 14 β π¦ Installierbar als PWA β 15 β β 16 β βββββββββββββββββββββ β 17 β β 18 β Guide Β· Security Β· Changelog β β Navigation Tool-Infos 19 β β 20 β βββββββββββββββββββββ β 21 β β 22 β Datenschutz Β· Nutzungsbeding. β β Footer (Plattform-Basis, rechtlich) 23 β Haftungsausschluss Β· Impressumβ 24 β β 25 βββββββββββββββββββββββββββββββββββ
Chat-App `/info` β neue Rolle ab v1.3.0
1 βββββββββββββββββββββββββββββββββ 2 β xPulse Chat β 3 β Version 1.3 .0 β 4 β β 5 β P2P Chat. Privat. β 6 β Ende-zu-Ende verschlΓΌsselt. β 7 β β 8 β βββββββββββββββββββββββββ β 9 β β 10 β β Erste Schritte β /tool/ chat/guide/ 11 β β Sicherheit & AnonymitΓ€t β /tool/ chat/security/ 12 β β Changelog β /tool/ chat/changelog/ 13 β β 14 β βββββββββββββββββββββββββ β 15 β β 16 β Datenschutz β /tool/ chat/privacy/ 17 β Nutzungsbedingungen β /tool/ chat/terms/ 18 β Haftungsausschluss β /tool/ chat/disclaimer/ 19 β Impressum β /imprint/ 20 β β 21 βββββββββββββββββββββββββββββββββ
Verlinkung Chat β xpulse.one
Ort im Chat
Ziel
Ab Version
/info β Guide
xpulse.one/tool/chat/guide/
v1.3.0
/info β Security
xpulse.one/tool/chat/security/
v1.3.0
/info β Changelog
xpulse.one/tool/chat/changelog/
v1.3.0
/info β Datenschutz
xpulse.one/tool/chat/privacy/
v1.1.1
/info β Nutzungsbedingungen
xpulse.one/tool/chat/terms/
v1.1.1
/info β Haftungsausschluss
xpulse.one/tool/chat/disclaimer/
v1.1.1
/info β Impressum
xpulse.one/imprint/
v1.1.1
Sidebar Version-Pill
xpulse.one/tool/chat/changelog/
v1.3.0
Sidebar Footer
xpulse.one/tool/chat/privacy/ etc.
v1.3.0
Styleguide
Identisch mit der Chat-App und den Feedback-Forms β ein einheitliches Design
ΓΌber alle xPulse-PrΓ€senzen.
CSS Custom Properties
1 :root {2 --bg : #0d0d0d ; 3 --surface : #141414 ; 4 --border : #222 ; 5 --muted : #444 ; 6 --text : #c8c8c8 ; 7 --text-dim : #555 ; 8 --accent : #8703b0 ; 9 --accent2 : #7eb8a4 ; 10 --danger : #c0606a ; 11 --mono : 'JetBrains Mono' , ui-monospace, 'Cascadia Code' , 'Fira Code' , Consolas, monospace; 12 --serif : 'Fraunces' , Georgia, ui-serif, serif; 13 }
Typografie
Element
Font
GrΓΆΓe
Gewicht
Besonderheit
Logo / Brand
--serif
2.4rem
300
color: var(--accent)
FlieΓtext
--mono
13px
400
line-height: 1.6
Labels / Badges
--mono
10β11px
400
letter-spacing: 0.08β0.12em; text-transform: uppercase
Section Titles
--mono
10px
400
color: var(--accent2); letter-spacing: 0.12em
Code
--mono
11px
400
background: var(--surface); border: 1px solid var(--border)
1 border-radius : 2px ;2 border : 1px solid var (--border);3 padding (Karten): 1rem 1.2rem ;4 max-width (Content ): 640px ;5 margin : 0 auto;
Noise-Overlay
1 body ::before {2 content : '' ; 3 position : fixed; 4 inset : 0 ; 5 background-image : url ("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E" ); 6 pointer-events : none; 7 z-index : 9999 ; 8 opacity : 0.4 ; 9 }
1 .btn-primary {2 background : var (--accent); 3 color : #fff ; 4 border : none; 5 font-family : var (--mono); 6 font-size : 12px ; 7 font-weight : 600 ; 8 letter-spacing : 0.1em ; 9 text-transform : uppercase; 10 padding : 0.75rem 1.5rem ; 11 border-radius : 2px ; 12 cursor : pointer; 13 transition : opacity 0.15s , transform 0.1s ; 14 } 15 .btn-primary :hover { opacity : 0.85 ; }16 .btn-primary :active { transform : scale (0.98 ); }17 18 .btn-secondary {19 background : none; 20 color : var (--text); 21 border : 1px solid var (--border); 22 } 23 .btn-secondary :hover { border-color : var (--accent2); color : var (--accent2); }
Links
1 a {2 color : var (--text-dim); 3 text-decoration : none; 4 letter-spacing : 0.08em ; 5 text-transform : uppercase; 6 font-size : 11px ; 7 transition : color 0.15s ; 8 } 9 a :hover { color : var (--accent); }
Animations
1 @keyframes fadeIn {2 from { opacity : 0 ; transform : translateY (8px ); } 3 to { opacity : 1 ; transform : translateY (0 ); } 4 } 5 animation : fadeIn 0.3s ease both;
i18n β Internationalisierung
Strategie
Keine URL-Slugs fΓΌr Sprachen (/de/, /en/ entfΓ€llt).
Die Sprache ist eine Nutzer-PrΓ€ferenz, keine Route.
Default: de
Wechsel: ohne Page Reload, per JS
Speicherung: localStorage β Key xpulse_lang
<html lang="xx"> wird bei jedem Sprachwechsel aktualisiert
Screenreader-KompatibilitΓ€t
Texte stehen immer als echter Inhalt im DOM β nie leer.
Der Default-Text (Deutsch) ist direkt im HTML eingebettet.
Beim Sprachwechsel ersetzt JS den textContent / innerHTML der Elemente.
Data-Attribute dienen nur als Hook, nicht als Textquelle.
1 2 <p data-i18n ="chat.guide.pairing.intro" > 3 Um mit jemandem zu chatten, mΓΌsst ihr euch einmalig pairen... 4 </p > 5 6 7 <p data-i18n ="chat.guide.pairing.intro" > </p >
Dateistruktur
1 locales/ 2 de/ 3 platform.about .json 4 platform.privacy .json 5 platform.terms .json 6 platform.disclaimer .json 7 tool.chat .guide .json 8 tool.chat .security .json 9 tool.chat .changelog .json 10 tool.chat .privacy .json 11 tool.chat .terms .json 12 tool.chat .disclaimer .json 13 en/ 14 platform.about .json 15 platform.privacy .json 16 ...
Dateinamen spiegeln die URL-Struktur wider: {scope}.{tool?}.{page}.json.
Der locales/-Ordner wird beim Start vollstΓ€ndig geparst β
neue Dateien werden automatisch erkannt, kein manuelles Registrieren.
1 { 2 "chat.guide.pairing.intro" : "Um mit jemandem zu chatten..." , 3 "chat.guide.pairing.step1" : "Eine Person ΓΆffnet βPeer hinzufΓΌgen" ...", 4 "chat.guide.faq.storage": " AusschlieΓlich lokal in deinem Browser..." 5 }
Flache Key-Value-Struktur. Keys folgen dem Schema {scope}.{page}.{block}.{element}.
Kein tief verschachteltes JSON β einfacher zu durchsuchen und zu pflegen.
JavaScript β i18n.js
1 2 3 4 5 6 7 8 const STORAGE_KEY = 'xpulse_lang' ;9 const DEFAULT_LANG = 'de' ;
Jede Seite bindet nur das JSON ein das sie braucht β
kein monolithisches Translations-Bundle.
HTML-Integration
1 <html lang ="de" > 2 ... 3 4 <button data-lang-switch ="en" > EN</button > 5 <button data-lang-switch ="de" > DE</button > 6 7 8 <h1 data-i18n ="chat.guide.title" > Erste Schritte</h1 > 9 <p data-i18n ="chat.guide.pairing.intro" > Um mit jemandem...</p >
Offene Punkte
Thema
Status
i18n β Implementierung
Geplant, nΓ€chster Schritt
/tool/chat/status/ β Inhalt & Format
TBD
Changelog-Format (manuell vs. auto-build)
TBD
TURN-only Modus im Chat
Geplant, Version offen
/component/ui/ β Scope & Inhalt
TBD
Release-Reihenfolge
1 xpulse-web v1.0.0 β Plattform Landing + Tool Chat (Guide, Security, Changelog) 2 + alle Rechtsseiten (Plattform-Basis + Chat-ErgΓ€nzungen) 3 β 4 chat v1.1.1 β Rechtliche Links auf xpulse.one/tool/ chat/* in /i nfo 5 β 6 chat v1.2.0 β v1.1.1 bereits gemergt 7 β 8 chat v1.3.0 β /info als reiner About-Screen, alle Links β xpulse.one 9 Version-Pill β xpulse.one/tool/ chat/changelog/ 10 Sidebar Footer β xpulse.one/tool/ chat/* Rechtliches