Developing for ANetBBS
Want to write a door, a web feature, a theme, or hook into messaging?
You're in the right place.
The seven door types
ANetBBS runs door games via seven distinct backends:
- DOS doors (DOSBox-staging) — TradeWars, LORD-DOS, Usurper
- Native Linux doors — any executable, stdio piped
- Synchronet
.jsdoors — realjsexecif installed, otherwise
our built-in Node + Synchronet API shim (~270 functions) - Mystic Pascal
.mps/.mpx— bundled Mystic 1.12 A48 runtime - Mystic Python
.py— fakemystic_bbsmodule - rlogin out-dial — DoorParty / A-Net Online / Synchronet xtrn
- Built-in web games — Flask-routed mini-games
See docs/17-development.md for the
deep-dive: drop file formats, token substitution table, working code
examples for each type.
Extending the web app
The web side is Flask + SQLAlchemy + SocketIO. Adding a new
feature is roughly:
- Create a blueprint in
anetbbs/web/myfeature.py - Register it in
anetbbs/web_app.py - Add templates in
anetbbs/templates/myfeature/ - (Optional) Add a nav-bar link in
templates/base.html - (Optional) Add a model class to
anetbbs/models.py+ run
flask db migrate
The whole pipeline is ~50 lines of code for a working feature blueprint.
Database
anetbbs/models.py is the single source of truth for SQLAlchemy
models. Flask-Migrate (alembic) handles schema changes — add a column,
run flask db migrate -m "...", the service auto-runs flask db
upgrade on next start.
Themes
Themes are DB rows with CSS variable values, edited visually at
/admin/theme-builder/. Add a new built-in theme by tweaking colors
in the builder, then add the resulting values to the theme seed block
in anetbbs/seed_data.py.
Real-time features
Flask-SocketIO is wired up in web_app.py. The Web Terminal and MRC
client are both reference implementations of a feature that spawns a
background eventlet greenthread, pumps bytes between a backend socket
and the browser, and handles reconnect.
Echomail / FidoNet networks
Pollers live in anetbbs/echomail/{binkp,qwk,tic}.py. Adding a new
network type is one new module + one new EchomailNetwork.protocol
discriminator.
Where to ask questions
- The MRC chat —
#mrc-anet-developmenton
mrc.bottomlessabyss.net - Open a GitHub issue at
anetonline/anetbbs - This wiki — anyone with edit rights can expand the
Development page and create child pages
If you ship something cool, PR it back and we'll bundle it with the
next alpha.
Reference
The authoritative deep-dive is at docs/17-development.md.
This wiki page is the lightweight community-editable companion.