Quick navigation

Find your way around.

Home Route Work Route Lab Route Capabilities Route About Route Contact Route Journal Route Start a project Route Auctibuy Marketplace / Live commerce A real-time auction marketplace connecting discovery, creator operations, bidding, specialist roles, and account workflows. Liberty Digitizing Commerce / Production operations A PHP/MySQL storefront and production system joining apparel, service quotes, customer accounts, and staff handoffs. Digitizing Depot WordPress / Service operations A WordPress service storefront supported by separate PHP/MySQL production operations and a custom guided-help plugin. Spider Digitizing Service commerce / Production platform A framework-free PHP production platform linking public rates and quote tickets to customer accounts, staff permissions, and delivery workflows. Affinity Hospitality UAE B2B manufacturing / Hospitality A specification-led hospitality and bags website helping B2B buyers turn manufacturing capability into a useful enquiry. TY Dress Collection Fashion ecommerce A PHP/MySQL couture shop linking collection-led browsing to variants, cart snapshots, customer accounts, and order operations. Relay Open source / Terminal tools An open-source terminal chat application with rooms, direct messages, presence, and optional client-side encrypted rooms. Gitscape Open source / Developer tools A local Git activity tool with a terminal interface and a self-contained offline HTML dashboard. Hamwas Agency website An agency website connecting services, selected work, process, and custom-order enquiries. Star Tourism WordPress / Travel services A WordPress travel-services website presenting packages and practical details before a WhatsApp enquiry. Global Beauty Verse Brand / Events and training A beauty-industry event and training website connecting women’s skill development, event archives, community, and enquiries. One auction room needs one answer Product engineering A bid screen has one job: show people the same current truth. Here is how I think about that problem in Auctibuy. A quote form is part of the product Service commerce A useful quote form helps a customer explain the job and helps the team know what to do next. A catalogue should help someone choose Interface design More products do not automatically make a better shop. The first screen should help a person find a sensible place to start. Product systems Capability The product layer behind auction rooms, quote tickets, account areas, and operational handoffs.

Case study Open source / Terminal tools

Relay

An open-source terminal chat application with rooms, direct messages, presence, and optional client-side encrypted rooms.

Problem statement

Keep a live, multi-room conversation usable inside a text-first terminal interface with lightweight session-based server state.

Relay — project interface

Proof / A quick look

See the product before the detail.

View all images
Relay — Relay — multi-room terminal chat
01 / Relay — multi-room terminal chat

01 / Overview

The brief.

Relay brings a live conversation into the terminal. I built the JavaScript application around a Node.js WebSocket server and a React/Ink terminal interface, with multi-room chat, direct messages, presence, and scrollback. Capped, in-memory server state keeps recent room activity available during the running session, while optional encrypted rooms put key derivation and message encryption in the client.

02 / Situation

What was already true.

The application needs to show conversation, room context, and other participants within a text-first interface.

03 / Decision

The choice that set the shape.

Use React/Ink for the terminal UI, WebSockets for live communication, and capped in-memory server state for the chat session.

04 / Responsibilities

What I designed and built.

I implemented the terminal interaction, server messaging, room and direct-message flows, presence, scrollback, and the optional encrypted-room client path.

05 / Architecture

The implementation behind the interface.

A Node.js 22 server communicates over ws with a JavaScript React/Ink client. Optional encrypted rooms derive a key client-side with scrypt and encrypt messages using AES-256-GCM. The persistence model is capped, in-memory server state, holding recent chat activity for the running session.

06 / System

How the pieces fit.

Participants move between rooms, follow presence, exchange room or direct messages, and inspect recent scrollback. For optional encrypted rooms, the client handles key derivation and message encryption before sending messages over the WebSocket connection.

07 / Evidence

What the shipped interface can show.

The React/Ink interface presents room conversations, direct messages, presence, and scrollback in the terminal. The WebSocket server manages live messaging and capped in-memory state, while the client crypto module implements scrypt key derivation and AES-256-GCM for optional encrypted rooms.

08 / Feature list

Features.

  • Terminal chat interface
  • Multiple rooms
  • Direct messages
  • Presence and scrollback
  • Optional client-side encrypted rooms
  • Capped in-memory server state
100%

Keep exploring

All projects

Next / Your project

Let’s build
something good.

Bring the screen, workflow, or half-formed idea that is getting in the way.

Tell me about your project