5c9cb269fbb903f3e8889e0740c02b9f56d6f285
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>
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
Languages
Ruby
98.9%
Dockerfile
0.9%
Shell
0.2%