An experiment: what if the entire Status.im website was a WeeChat terminal session? Not a skin. Not a theme toggle. The complete content — documentation, downloads, features, news, communities, network, keycard, chat — rendered as a TUI with buffer lists, nick lists, status bars, and monospace character grids. The web presented as a terminal session.
The Premise
Status is an open-source decentralised wallet and messenger. It is permissionless — nobody controls the P2P network. It is free and ad-free. Communities are powered exclusively by their members running the Status desktop app. Self-custodial keys safeguard wallets and messages via elliptic curve cryptography. SNT holders influence governance.
The product is built on principles of sovereignty and minimalism. The website should reflect that. A standard marketing site — hero sections, gradient buttons, testimonial carousels — contradicts the product’s philosophy. A terminal interface does not. The medium is the message.
The Interface
Every screen replicates WeeChat’s canonical TUI pane layout. Top title bar with version and URLs. Left buffer list with numbered channels — Home, Download, Documentation, News, Contribute, GitHub, Search. Main chat buffer pane with timestamp, nick, and message columns. Right nick list with contextual shortcuts and anchors. Bottom input line and status bars with buffer number, network info, keyboard hints, and clock.
All content renders as terminal lines within a fixed character grid. No standard web layouts. Headings use status-bar style inverse lines. Code blocks get Pygments-style ANSI palette highlighting. Links are bracketed inline. Lists use bullet characters in the grid. Dividers are box-drawing characters — │ ─ ┌ ┐ └ ┘ ├ ┤.
The Design System
16-colour ANSI palette matching WeeChat’s classic dark theme. Background #1b1d1e. Foreground #c5c8c6. The full ANSI set — blue, green, yellow, red, magenta, cyan — mapped to semantic roles across the interface. Monospace only — JetBrains Mono or Fira Mono at 12–14pt. Fixed line height for character grid alignment. No rounded corners. No gradients. No shadows.
Mobile adapts to single-pane stacked views. Buffer list slides in and out. Bottom status bar stays above the soft keyboard. Swipe gestures switch buffers. 60 FPS scrolling requirement. The terminal aesthetic does not break on small screens — it compresses.
Why This Exists
A decentralised messenger that values privacy, sovereignty, and minimalism should not present itself through a website that tracks visitors, loads analytics scripts, and renders in the same visual language as every SaaS landing page. The terminal interface is not decoration. It is a statement about what the product believes. The brand should be evidence of its own thesis.
Stack: React 18 · TypeScript · Vite · Tailwind · shadcn/ui · Express · PostgreSQL · Drizzle ORM Status: Live at bananalarry.net GitHub