# BBS-MD ## What This Is A retro-styled terminal markdown viewer that renders a vault of interconnected markdown files as browsable pages in a ratatui TUI. It acts like a BBS — the binary is set as a user's login shell so when someone SSHs in, they land directly in the markdown browser. Multiple users can connect and browse simultaneously. ## Core Value Users can connect via SSH and seamlessly browse a vault of linked markdown documents with retro BBS aesthetics — no shell, no commands, just content navigation. ## Requirements ### Validated - ✓ Rust binary with ratatui dependency — existing - ✓ Cargo project scaffolded (edition 2024) — existing ### Active - [ ] Render markdown files as styled terminal pages (headers, bold, lists, code blocks, tables) - [ ] Support `[[wiki-links]]` and standard `[markdown](links)` between documents - [ ] Web-like navigation: follow links, go back, history - [ ] Landing page via index.md as entry point - [ ] Filesystem watching for live content updates - [ ] Multi-user read-only access (concurrent sessions) - [ ] Retro BBS aesthetic (ANSI art, box-drawing characters) - [ ] Show `[IMAGE: alt text]` placeholders for images - [ ] Vault-relative link resolution (links resolve to .md files in vault) ### Out of Scope - Embedded SSH/telnet server — the OS SSH daemon handles connections, this is just a terminal app - Write/edit capabilities — read-only viewer - User authentication or identity — the SSH daemon handles auth - Mobile or web frontend — terminal only - Image rendering beyond placeholders — no sixel/kitty graphics ## Context - Existing Rust project with ratatui 0.30.0, crossterm backend, anyhow for errors - Early stage — currently just scaffolding with hello world - The binary will be configured as a user's default shell in `/etc/passwd` or sshd config - Multiple SSH connections = multiple independent processes, each running the same binary against the same vault directory - Vault is a directory of .md files, structure defined by the content creator - Filesystem watching means the app picks up new/changed files without restart ## Constraints - **Runtime**: Rust with ratatui — already chosen and scaffolded - **Transport**: Pure terminal app, no networking code needed - **Rendering**: Must work in standard VT100-compatible terminals - **Concurrency**: Read-only access, so no file locking needed between sessions - **Entry point**: Must handle being launched as a login shell gracefully ## Key Decisions | Decision | Rationale | Outcome | |----------|-----------|---------| | No embedded SSH server | App is a login shell, SSH daemon handles transport | — Pending | | Both wiki-links and markdown links | Maximum compatibility with existing vaults | — Pending | | Filesystem watching over manual reload | Content should feel "live" like a web server | — Pending | | index.md as landing page | Familiar convention, vault author controls the experience | — Pending | | Read-only, no auth | Simplicity — SSH daemon handles access control | — Pending | --- *Last updated: 2026-02-28 after initialization*