A Star Trek library for the BBS network: every series and film with its episodes, the day each first aired, its directors and writers, what first aired on this day, and the articles of Memory Alpha, the fans' wiki, read a section at a time.
Live at
teletypegames.org:2333, in the browser on bbsweb, and through TTG Gate BBS
A Ruby app on the rubbs gem, like Alexandria BBS and Commodex BBS.
It has two faces on one port:
A call starts with rubbs' BBS::Terminal question: RETURN takes the guess, 1 picks the modern face, 2 the C64.
Star Trek is a trademark of Paramount. This is a fan library, not affiliated with Paramount; the board shows no scripts, transcripts or pictures.
| What | Source | Licence |
|---|---|---|
| The catalog: series and their years, episodes with season, number, first air date, directors, writers; the films | Wikidata: every Star Trek episode (Q61220733) and every film of the franchise (P8345 = Q1092), read with rubbs' BBS::Wikidata |
CC0 |
| The articles | Memory Alpha, read on demand from its Action API with rubbs' BBS::MediaWiki, cut into sections by BBS::MediaWiki::Extract |
CC BY-NC, credited under every article |
About 1,000 episodes and films in 15 series. A snapshot of the catalog ships with the board (config/catalog.json.gz); the running board reads Wikidata again once a week and keeps the new copy in data/. A failed refresh keeps the old snapshot. An episode's Memory Alpha article is the one Wikidata names (its Fandom article id, P6262); without one the board opens the article of its title, else the first search hit.
Memory Alpha is asked at most three times a second, all callers together, and its answers are kept for half an hour. Both faces can show an article's address as a QR code (rubbs' BBS::QR), by its page id, so a phone opens it with the pictures.
On a modern terminal:
| Key | Action |
|---|---|
| F2 | Series |
| F3 | On this day: what first aired on today's date |
| F4 | Library computer: search Memory Alpha |
| F7 | A random article |
| Enter | A series' episodes; an episode's article |
| Alt-Q | The article's QR code (in an article window) |
| F10 | The menu |
| Alt-X | Log off |
On a Commodore 64 the main menu is S series and films, T on this day, L library computer, R a random article, Q log off. A series with seasons asks for the season first. Under an episode's card R reads its article; an article is its list of sections, and C shows its QR code.
A typed title opens its article even in another case ("data" opens Data); other words bring the search results.
| Variable | Default | |
|---|---|---|
STARBASE_BBS_CATALOG_SEED |
config/catalog.json.gz |
the snapshot shipped with the image |
STARBASE_BBS_CATALOG |
data/catalog.json.gz |
the snapshot a refresh writes |
STARBASE_BBS_CATALOG_TTL |
604800 |
seconds before Wikidata is read again |
The board keeps no other data and has no secrets. bin/refresh-catalog writes a new seed from Wikidata in a dev checkout.
A push to master deploys it from Woodpecker (RuboCop, the tests, compose check, ci-deploy starbase-bbs); the container is starbase-bbs, in /srv/stacks/starbase-bbs, and data/ stays between deploys.
The code follows the house layering: lib/domain (SeriesModel, EpisodeModel, ArticleModel; the Wikidata, catalog and Memory Alpha repositories; CatalogService, LibraryService; the composition root StarbaseBBS) knows nothing of telnet, and lib/ui holds UI::Modern and UI::Petscii. The catalog lives in memory (the whole board takes about 30 MB). The Wikipedia-only client of rubbs became BBS::MediaWiki for this board in rubbs 1.4.0, with BBS::MediaWiki::Extract and BBS::Wikidata beside it.