# txt3 BBS (wap.txt3.net) A retro multi-front-end community platform that brings back the early 2000s internet experience of txt3 (Connecting people - since 1997). One account works across three front-ends: WML mobile, XHTML web, and telnet BBS, sharing forums, private mail, profiles, games, and an RPG MUD. ## Front-ends ### 1. PHP Web Site (wap.txt3.net) - **Markup**: Auto-detects WML 1.1 (for period phones) vs XHTML (modern browsers) - **URL**: https://wap.txt3.net/ - **Features**: Forums, private messaging, user profiles, embedded games, RPG character overview - **Tech**: PHP 8+, SQLite, session IDs in URL for WAP clients without cookies - **Responsive**: Designed to work on 2-inch phone screens up to desktop browsers ### 2. Telnet BBS (wap.txt3.net:12300) - **Protocol**: Raw telnet with minimal negotiation (RFC 854 compliant) - **URL**: `telnet://wap.txt3.net:12300` or `ssh -t wap.txt3.net nc 12300` - **Features**: Text-based interface to the same forums, mail, games, and full MUD RPG - **Tech**: Python 3, SQLite, same database as web front-end - **Control**: Arrow keys for movement, single-letter commands (k=look, t=take, k=fight) ### 3. RPG MUD (shared) - **Integrated**: The telnet BBS includes a full RPG world separate from web features - **Play**: Create a character when you login; explore rooms, fight monsters, find items, level up - **Items**: Weapons, armor, potions (healing), gold bank - **PvP**: Attack other players in the same room - **Leaderboards**: High scores across all games ## How It Works **Single Database**: Both front-ends read/write the same SQLite database (`public_html/data/wap.sqlite`). You create one account and it works everywhere: - Login on the web → check mail → post in forums → play games - Or start a telnet session → explore the MUD → fight monsters → collect loot - Your character, items, and game scores are shared across all three interfaces **Password Security**: PHP handles bcrypt hashing. Python BBS calls the PHP binary to verify/create passwords - no shared password library needed. **Markup Detection**: Clients advertising `vnd.wap.wml` in the Accept header get WML 1.1 decks with softkeys. Everything else gets XHTML. You can manually force a markup with `?m=wml` or `?m=html`. ## Quick Start ### Running the Telnet BBS (development) ```bash cd /home/jp/IdeaProjects/txt3-wap python3 bbs/bbsd.py ``` Requires `php` binary at `/usr/bin/php` for password hashing. ### Web Front-end Already deployed at https://wap.txt3.net ### Database Existing seed data includes: - 3 forums: General, Mobile, Games - Pre-populated MUD world with rooms, monsters, and items - Default admin user (admin/wapadmin) ### Client List **Telnet clients that work well:** - `telnet wap.txt3.net 12300` (standard) - PuTTY in raw mode - Windows telnet - `nc wap.txt3.net 12300` **Mobile:** Any WAP 1.1 browser can access `wap.txt3.net` directly (phones from early 2000s still work) ## Project History - **1997**: txt3 begins "Connecting people" - **2002-2003**: First txt3 domains archived by Internet Archive - **2004**: txt3.net joins family, original WAP deck launched - **2016**: Revival with unlimited free SMS + forum + blog - **2025**: This hybrid reborn - same account across WML, XHTML, and telnet See `public_html/about.php` for detailed timeline. ## Technical Notes **Security** - Hardened systemd service (`txt3-bbs.service`) with read-only filesystem protection - Passwords hashed with PHP's bcrypt (`password_hash`/`password_verify`) - Tailscale-only listener for BBS (port 12300) **Architecture** - **PHP**: `bootstrap.php` → `db.php` → `ui.php` → `mud.php` - **Python**: `bbsdb.py` → `mud.py` → `boards.py`/`games.py`/`screens.py` - **Shared tables**: users, messages, forums, topics, posts, scores, matches, sp_games - **MUD tables**: mud_rooms, mud_mobs, mud_items, mud_spawn, mud_chars, mud_events, etc. **MUD Controls** - Movement: `[n/s/e/w/u/d]` (North/South/East/West/Up/Down) - Actions: `[l]ook`, `[k]ill `, `[t]ake `, `[w]ield/[d]rink` - `[i]nventory`, `[sc]ore`, `[b]ank `, `[bank]` interface - PvP: `[a]ttack ` in same room - `[board]` for leaderboards **Games** - Single-player: Guess the Number (scoring by tries), Quick Quiz (5 questions) - Multiplayer: Noughts & Crosses (TTT) and Nim - 21 sticks (turn-based) - Scores stored in `scores` table; leaderboards show top 5 per game **Admin Tools** - Telnet BBS: `[A]dmin tools` → user management, forums, topics, MOTD, stats - Web: Admin link visible on profile when `is_admin=1` ## Community This isn't just a technical project - it's a time capsule of early internet culture. The same account works whether you're: - On a modern browser checking messages - On a vintage phone browsing WML - Sitting at a terminal with `telnet` The MUD adds a gamified layer, and games bridge web and telnet play. Your character progresses whether you type commands or click links. ## Future Enhancements (TODO) See `TODO.md` for detailed roadmap. ## License Original txt3 concept from 1997, this revival released under original terms. No commercial redistribution without explicit permission from JP. --- *Questions? Comments? Bugs? Use the admin tools or contact via the website.* *Remember: This site works best with patience and a nostalgic spirit.* ## Recent Changes - Initial commit: All three front-ends, shared database, basic MUD world - Both front-ends synchronized on first boot - telnet BBS service hardened with systemd unit - Password hashing handled entirely by PHP (no shared libs)