xpulse-web β Concept & Strategy
Status: CONCEPT v3 Β· Repo: xpulse-web
Companion document: CONTENT_xpulse-web.md (page content)
Updated March 2026
Goal & Principle
xpulse.one is the platform. Not just a landing page for the chat,
but the shared home for all xPulse tools, components, and
platform-wide content.
chat.xpulse.one is the first tool. More can follow.
Single Responsibility:
chat.xpulse.one β app, UI, communication
xpulse.one β platform, information, documentation, legal
The /info page in the chat becomes a minimal about screen
(version, one-liner, links to xpulse.one) β no own content anymore.
URL Structure
1 / { slug} β platform-wide (general & legal)2 /tool/ { tool-slug} / β tool landing & tool-specific content3 /tool/ { tool-slug} /{ sub-slug} / β tool sub-pages4 /component/ { component-slug} / β shared components overview5 /component/ { component-slug} /{ sub} / β component sub-pages
Domain Structure
1 ββ Platform βββββββββββββββββββββββββββββββββββββββββββ 2 xpulse.one/ β Platform landing 3 xpulse.one/about/ β What is xPulse (the platform) 4 5 ββ Tools ββββββββββββββββββββββββββββββββββββββββββββββ 6 xpulse.one/tool/ chat/ β Chat tool landing 7 xpulse.one/tool/ chat/guide/ β Getting started (chat- specific) 8 xpulse.one/tool/ chat/security/ β Security & anonymity (chat- specific) 9 xpulse.one/tool/ chat/changelog/ β Chat changelog β version pill in chat 10 11 ββ Components βββββββββββββββββββββββββββββββββββββββββ 12 xpulse.one/component/ ui/ β Shared UI components (TBD ) 13 xpulse.one/component/ ui/examples/ β Examples / showcase (TBD ) 14 15 ββ Legal (Platform Base ) ββββββββββββββββββββββββββββββ 16 xpulse.one/privacy/ β Privacy policy platform base 17 xpulse.one/terms/ β Terms of service platform base 18 xpulse.one/disclaimer/ β Disclaimer platform base 19 xpulse.one/imprint/ β Imprint 20 21 ββ Legal (Tool - specific) ββββββββββββββββββββββββββββββ 22 xpulse.one/tool/ chat/privacy/ β Privacy supplement chat 23 xpulse.one/tool/ chat/terms/ β Terms supplement chat 24 xpulse.one/tool/ chat/disclaimer/ β Disclaimer supplement chat 25 26 ββ App ββββββββββββββββββββββββββββββββββββββββββββββββ 27 chat.xpulse.one/ β xPulse Chat app (p2p- chat repo)
Legal β Inheritance Model (Option A)
Platform-wide legal documents apply as the base for all tools.
Tool-specific documents are supplements, not replacements.
1 xpulse.one/privacy/ β always applies, for all tools 2 xpulse.one/tool/ chat/privacy/ β applies additionally, for chat only
Principle:
Platform document: general fundamentals, platform-wide behaviour
Tool document: "In addition to the platform policies, the following applies to xPulse Chat..."
Tool document always explicitly references the platform document as its base
Users must read both β the tool document makes this transparent
Linking in the chat app:
Location
Target
/info β Privacy
xpulse.one/tool/chat/privacy/ (internally references platform base)
/info β Terms of Service
xpulse.one/tool/chat/terms/
/info β Disclaimer
xpulse.one/tool/chat/disclaimer/
/info β Imprint
xpulse.one/imprint/ (platform only, no tool-specific)
Page Overview
Route
Title
Type
Status
/
xPulse
Platform Landing
Planned
/about/
About xPulse
Platform Info
Planned
/tool/chat/
xPulse Chat
Tool Landing
Planned
/tool/chat/guide/
Getting Started
Tool Info
Planned
/tool/chat/security/
Security & Anonymity
Tool Info
Planned
/tool/chat/changelog/
Changelog
Tool Info
Planned
/tool/chat/status/
Status
Tool Info
TBD
/component/ui/
UI Components
Component
TBD
/privacy/
Privacy Policy (Platform)
Legal
Planned
/terms/
Terms of Service (Platform)
Legal
Planned
/disclaimer/
Disclaimer (Platform)
Legal
Planned
/imprint/
Imprint
Legal
Planned
/tool/chat/privacy/
Privacy Policy (Chat)
Legal
Planned
/tool/chat/terms/
Terms of Service (Chat)
Legal
Planned
/tool/chat/disclaimer/
Disclaimer (Chat)
Legal
Planned
Repo Structure
1 xpulse-web/ 2 docs/ 3 CONCEPT_xpulse-web.md 4 CONTENT_xpulse-web.md 5 public/ 6 index.html β Platform 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 β Platform base 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
Infrastructure
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 }
Landing Page Layout
1 βββββββββββββββββββββββββββββββββββ 2 β β 3 β xPulse β β Logo (serif, accent) 4 β βββββββββββββββββββββ β 5 β P2P Chat. Private. Encrypted . β β Tagline (currently chat-focused, 6 β β later platform-wider) 7 β [β Open Chat] β β CTA β chat.xpulse.one 8 β β 9 β βββββββββββββββββββββ β 10 β β 11 β π End -to -end encrypted β β Feature pills 12 β ⬑ Peer-to -peer, no server β 13 β π΅ No data storage β 14 β π¦ Installable as PWA β 15 β β 16 β βββββββββββββββββββββ β 17 β β 18 β Guide Β· Security Β· Changelog β β Navigation tool info 19 β β 20 β βββββββββββββββββββββ β 21 β β 22 β Privacy Β· Terms of Service β β Footer (platform base, legal) 23 β Disclaimer Β· Imprint β 24 β β 25 βββββββββββββββββββββββββββββββββββ
Chat App `/info` β New Role from v1.3.0
1 βββββββββββββββββββββββββββββββββ 2 β xPulse Chat β 3 β Version 1.3 .0 β 4 β β 5 β P2P Chat. Private. β 6 β End -to -end encrypted . β 7 β β 8 β βββββββββββββββββββββββββ β 9 β β 10 β β Getting Started β /tool/chat/guide/ 11 β β Security & Anonymity β /tool/chat/security / 12 β β Changelog β /tool/chat/changelog/ 13 β β 14 β βββββββββββββββββββββββββ β 15 β β 16 β Privacy Policy β /tool/chat/privacy/ 17 β Terms of Service β /tool/chat/terms/ 18 β Disclaimer β /tool/chat/disclaimer/ 19 β Imprint β /imprint/ 20 β β 21 βββββββββββββββββββββββββββββββββ
Linking Chat β xpulse.one
Location in Chat
Target
From 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 β Privacy
xpulse.one/tool/chat/privacy/
v1.1.1
/info β Terms of Service
xpulse.one/tool/chat/terms/
v1.1.1
/info β Disclaimer
xpulse.one/tool/chat/disclaimer/
v1.1.1
/info β Imprint
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
Style Guide
Identical to the chat app and feedback forms β a unified design
across all xPulse presences.
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 }
Typography
Element
Font
Size
Weight
Notes
Logo / Brand
--serif
2.4rem
300
color: var(--accent)
Body 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)
Spacing & Shapes
1 border-radius : 2px ;2 border : 1px solid var (--border);3 padding (cards): 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 β Internationalisation
Strategy
No language slugs in URLs (/de/, /en/ are dropped).
Language is a user preference, not a route.
Default: de
Switch: without page reload, via JS
Storage: localStorage β key xpulse_lang
<html lang="xx"> is updated on every language switch
Screen Reader Compatibility
Text always exists as real content in the DOM β never empty.
The default text (German) is embedded directly in the HTML.
On language switch, JS replaces the textContent / innerHTML of elements.
Data attributes serve only as hooks, not as text sources.
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 >
File Structure
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 ...
File names mirror the URL structure: {scope}.{tool?}.{page}.json.
The locales/ directory is fully parsed on startup β
new files are detected automatically, no manual registration.
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 }
Flat key-value structure. Keys follow the scheme {scope}.{page}.{block}.{element}.
No deeply nested JSON β easier to search and maintain.
JavaScript β i18n.js
1 2 3 4 5 6 7 8 const STORAGE_KEY = 'xpulse_lang' ;9 const DEFAULT_LANG = 'de' ;
Each page only loads the JSON it needs β
no monolithic 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 >
Open Points
Topic
Status
i18n β Implementation
Planned, next step
/tool/chat/status/ β content & format
TBD
Changelog format (manual vs. auto-build)
TBD
TURN-only mode in chat
Planned, version open
/component/ui/ β scope & content
TBD
Release Order
1 xpulse-web v1.0.0 β Platform landing + tool chat (guide, security, changelog) 2 + all legal pages (platform base + chat supplements) 3 β 4 chat v1.1.1 β Legal links to xpulse.one/tool/ chat/* in /i nfo 5 β 6 chat v1.2.0 β v1.1.1 already merged 7 β 8 chat v1.3.0 β /info as pure about screen, all links β xpulse.one 9 version pill β xpulse.one/tool/ chat/changelog/ 10 sidebar footer β xpulse.one/tool/ chat/* legal