Zsolt Tasnadi 5c9cb269fb Redesign TUI with DOS Navigator look and two-panel layout
Full blue background (screen_fill), double-line bordered panels side
by side: left panel for the menu, right panel for content. The right
panel's title bar shows the current page name, username and online count.

Color theme (THEME constant) maps to combined fg+bg ANSI codes so all
elements look native on the blue background: bright cyan borders, white
normal text, yellow labels, black-on-cyan selection highlights.

Status bar at the bottom mimics the NC function key bar with bright key
labels on cyan background.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 21:53:18 +02:00
2026-03-11 07:28:14 +01:00
2026-05-11 21:06:59 +02:00
2026-05-11 21:06:59 +02:00
2026-04-28 22:58:37 +02:00
2026-04-28 22:58:37 +02:00
2026-04-28 22:58:37 +02:00

Teletype BBS Server

Telnet-accessible community BBS server built on the rubbs gem. ANSI-rendered retro terminal interface with a message board, wiki integration, and a game catalog.

Running

Docker Compose (recommended):

docker compose up --build

Directly (requires Ruby 3.x):

bundle install
ruby bbs.rb

Connect with:

telnet localhost 2323

Configuration

Copy env-example to .env and fill in the values:

Variable Default Description
WEBAPP_WIKIJS_TOKEN Bearer token for Wiki.js API (optional)
MESSAGES_PATH data/messages.dat Path to the messages CSV file

Menu

Option Description
Message Board View the last 30 messages
New Message Post a message (max 200 chars)
Blog Posts Browse blog entries from Wiki.js
HowTo Guides Browse how-to articles from Wiki.js
Game Catalog Browse the Teletype game catalog
Online Users List of currently connected users
System Info Server stats

Project structure

bbs.rb              Entry point — BBS configuration and flow definition
lib/
  online_users.rb   Thread-safe connected-users map
  message_board.rb  CSV-backed message store
  wiki.rb           Wiki.js GraphQL client
  catalog.rb        Games API client
  display.rb        ANSI rendering helpers and content handlers
data/
  messages.dat      Message board records (auto-created)

Data

Messages are stored in data/messages.dat (plain CSV, auto-created on first post). The data/ directory is mounted as a Docker volume so records survive container restarts.

Description
No description provided
Readme 263 KiB
Languages
Ruby 98.9%
Dockerfile 0.9%
Shell 0.2%