vision3

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 23, 2026 License: MIT

README ΒΆ

ViSiON/3 BBS Software

ViSiON/3

Overview

This project is a work-in-progress refactor and modernization of the classic ViSiON/2 BBS software, written in Go. The goal is to recreate the core functionality of the classic BBS experience using modern technologies.

This version uses a pure-Go SSH server (github.com/gliderlabs/ssh) for SSH functionality, providing full compatibility with legacy BBS terminal software like SyncTerm while maintaining modern security standards.

Note: This is currently under active development and is not yet feature-complete.

STUFF WE NEED

🎯 Contributors - Yes, You

What This Is: A moderately amusing, functional anachronism.

Are you the kind of person who can wrangle a Go codebase while arguing about why HSLINK was underrated? Do you have strong opinions about ANSI art but also know when to use a mutex? We need someone to lead this glorious mess.

Technical Chops:

  • Strong Go experience (not just "I vibe coded an app and apparently it works")
  • Deep understanding of terminal emulation, ANSI/VT100, character encodings
  • Bonus: Network programming experience (SSH, raw sockets)
  • Comfortable with legacy protocol implementation (ZMODEM, etc.)
  • Can read Pascal/C when needed to understand the original implementations

Cultural Fit:

  • Either lived through the BBS era OR has become genuinely obsessed with it
  • Gets why pipe codes matter and what makes a good door game
  • Understands this isn't about making money or padding a resume
  • Has opinions about which transfer protocol was best
  • Won't try to "modernize" it into a web app

Working Team:

  • Wrangling this wacko codebase into something proper
  • Help building a community of contributors
  • Make technical decisions when we need them
  • Keep the codebase from turning into spaghetti

What we won't do:

  • Rewrite this in Rust/JavaScript/whatever
  • Add a REST API and React frontend
  • Turn it into a web app
  • Modernize away what makes it a BBS

If this sounds like your particular flavor of madness, email: spaceman@vision3bbs.com

🎨 Period-Correct ANSI Artists & Art

Are you an old school ANSi artist (are you younger and infatuated for some reason with that time-period and style)? Do you need one more goddamn thing to do? Consider spending valuable free-time, compensated by nothing more than unyielding appreciation and thanks from the people that enjoy this kind of thing. There's at least 12 of us!

What we need:

  • Menu screens - Main, Message, File, Door menus with that classic warez BBS aesthetic
  • Login/Logoff screens - Welcome screens, new user applications, goodbye screens
  • Headers and prompts - Message headers, file listings, user stats displays
  • Transition screens - Loading screens, pause prompts, error messages
  • Special effects - Matrix rain, plasma effects, classic BBS animations

Style we're after:

  • Authentic early 90s underground/warez BBS aesthetic
  • Classic color schemes (cyan/magenta highlights, ice colors)
  • Scene-style fonts and logos
  • Period-appropriate group shoutouts and "greetz"

If you have skills, old .ANS files gathering dust, or just love the aesthetic of the golden age of BBSing, we want to hear from you! Contact us via GitHub issues or pull requests.

πŸ’» Go Developers Who Give a Damn

Do you write Go? Do you have fond memories of waiting 3 minutes for a single GIF to download at 14.4k? Are you looking for a project that will impress exactly nobody at your day job but might make a dozen middle-aged nerds unreasonably happy? Boy, do we have the unpaid volunteer opportunity for you!

If you aren't old enough to have experienced it first-hand, have you read a weird text file or listened to some wild-eyed GenX nutjob ramble on about how much we enjoyed it and decided "I need me some of that?"

Areas where we need help:

  • File transfer protocols (ZMODEM upload support, XMODEM, YMODEM)
  • File base management (tagging, batch downloads, upload processing)
  • QWK networking support
  • TUI/console app creation for admin tools (user editor, system configuration)
  • Performance optimization and scalability
  • Terminal emulation improvements
  • Modern features while maintaining the classic feel
  • Testing, bug fixes, and code reviews
  • Documentation and examples

Your reward? The satisfaction of knowing that somewhere, someone is reliving their misspent youth thanks to your code. Also, we'll put your handle in the credits. Not your real name though - this is a BBS, we have standards.

Please submit PRs!

πŸ’¬ Discord Community Manager

Do we need a Discord? Do you want to host it? Contact me!

spaceman@vision3bbs.com

Current Status

Feature Status Notes
Networking
SSH Server βœ… Working Pure-Go (gliderlabs/ssh), PTY support, SyncTerm compatible, legacy algorithms, auto-login
Telnet Server βœ… Working Full IAC negotiation, TERM_TYPE detection
Users
Signup & Authentication βœ… Working bcrypt hashed passwords, JSON persistence
User Listings & Stats βœ… Working Last callers, user listing, call history, stats display
TUI User Editor (ue) βœ… Working Full-screen terminal user management
Menus
Menu System βœ… Working .MNU, .CFG, .ANS files, ACS evaluation, password protection
Messaging
Message Areas βœ… Working JAM format, echomail/netmail, conferences, lightbar reader, threading, quoting, vi-style editor, newscan, last read
Private Mail βœ… Working User-to-user messaging, send/read/list
Message List View (scan) βœ… Working Title/subject scan view
Files
File Areas (basic) βœ… Working List areas, list files, select area
File Transfers βœ… Working ZMODEM working via sexyz
Full File Base πŸ“‹ In Progress Tagging, batch downloads, upload processing
Doors
Door/External Programs βœ… Working Dropfile generation, PTY passthrough
Networking/FTN
FTN Echomail/Netmail βœ… Working JAM-backed, tosser, import/export, dupe checking
Admin & Tools
Event Scheduler βœ… Working Cron-style, automated maintenance, FTN polling
One-liner System βœ… Working Retrograde-style
TUI String Editor (strings) βœ… Working Full-screen BBS string customizations
Config Hot Reload βœ… Working Live reload via fsnotify, no restart required
Invisible SysOp Login βœ… Working SysOp/CoSysOp login without appearing in caller log
SysOp Config TUI πŸ“‹ Planned System configuration editor
Quality
Comprehensive Testing πŸ“‹ Planned
Complete Documentation πŸ“‹ Planned

See tasks/tasks.md for development history and completed features.

Technology Stack

  • Language: Go 1.24+
  • SSH Server: github.com/gliderlabs/ssh β€” pure-Go SSH server with legacy algorithm support (SyncTerm, NetRunner compatible)
  • TUI Framework: Charmbracelet BubbleTea (github.com/charmbracelet/bubbletea) β€” full-screen terminal editors and admin tools
  • Event Scheduling: github.com/robfig/cron/v3 β€” cron-style event scheduler
  • Config Monitoring: github.com/fsnotify/fsnotify β€” live configuration hot reload
  • PTY Support: github.com/creack/pty β€” PTY handling for door programs
  • Terminal Handling: golang.org/x/term
  • Password Hashing: golang.org/x/crypto/bcrypt
  • Message Base: JAM binary format (echomail/netmail compatible)
  • Data Format: JSON (for users and configuration)

Platform Support

Linux x86_64 is the primary development and testing platform. Support for additional platforms is planned β€” contributions welcome.

Platform Architecture Status Notes
Linux x86_64 βœ… Tested Primary development platform
Linux ARM64 πŸ“‹ Planned Includes Raspberry Pi 4/5 (64-bit)
Linux ARM (32-bit) πŸ“‹ Planned Raspberry Pi 3 and earlier
macOS Apple Silicon (ARM64) πŸ“‹ Planned M1/M2/M3/M4
macOS Intel (x86_64) πŸ“‹ Planned
Windows x86_64 πŸ“‹ Planned

Note: ViSiON/3 is pure Go. The standard Go toolchain is all that's required to build for any supported platform.

Project Structure

vision3/
β”œβ”€β”€ cmd/
β”‚   β”œβ”€β”€ ansitest/           # ANSI color test utility
β”‚   β”œβ”€β”€ helper/             # FTN setup utility (import echomail areas)
β”‚   β”œβ”€β”€ strings/            # TUI string configuration editor
β”‚   β”œβ”€β”€ ue/                 # TUI user editor
β”‚   β”œβ”€β”€ v3mail/             # JAM message base and FTN mail processor
β”‚   └── vision3/            # Main BBS server application
β”œβ”€β”€ configs/                # Active configuration files (not tracked in git)
β”‚   β”œβ”€β”€ allowlist.txt       # IP allowlist for connection filtering
β”‚   β”œβ”€β”€ blocklist.txt       # IP blocklist for connection filtering
β”‚   β”œβ”€β”€ config.json         # Main BBS configuration
β”‚   β”œβ”€β”€ conferences.json    # Message/file conference definitions
β”‚   β”œβ”€β”€ doors.json          # Door/external program configurations
β”‚   β”œβ”€β”€ events.json         # Event scheduler (cron-style tasks)
β”‚   β”œβ”€β”€ file_areas.json     # File area definitions
β”‚   β”œβ”€β”€ ftn.json            # FidoNet/FTN network configuration
β”‚   β”œβ”€β”€ login.json          # Login sequence flow definition
β”‚   β”œβ”€β”€ message_areas.json  # Message area definitions
β”‚   β”œβ”€β”€ protocols.json      # File transfer protocol configuration
β”‚   β”œβ”€β”€ strings.json        # BBS string customizations
β”‚   └── ssh_host_rsa_key    # SSH host key
β”œβ”€β”€ templates/              # Configuration templates (tracked in git)
β”‚   └── configs/            # Template configuration files
β”œβ”€β”€ data/                   # Runtime data
β”‚   β”œβ”€β”€ users/              # User database and call history
β”‚   β”œβ”€β”€ msgbases/           # JAM format message bases
β”‚   β”‚   β”œβ”€β”€ general/        # General discussion area
β”‚   β”‚   └── sysop/          # Sysop area
β”‚   β”œβ”€β”€ files/              # File areas
β”‚   β”œβ”€β”€ ftn/                # FidoNet/FTN data (packets, tosses, etc.)
β”‚   └── logs/               # Application logs
β”œβ”€β”€ internal/               # Internal packages
β”‚   β”œβ”€β”€ ansi/               # ANSI/pipe code processing
β”‚   β”œβ”€β”€ chat/               # Inter-node chat and sysop paging
β”‚   β”œβ”€β”€ config/             # Configuration loading
β”‚   β”œβ”€β”€ conference/         # Conference management
β”‚   β”œβ”€β”€ editor/             # Full-screen text editor (BubbleTea)
β”‚   β”œβ”€β”€ file/               # File area management
β”‚   β”œβ”€β”€ ftn/                # FidoNet/echomail support
β”‚   β”œβ”€β”€ jam/                # JAM message base format
β”‚   β”œβ”€β”€ menu/               # Menu system & lightbar UI
β”‚   β”œβ”€β”€ message/            # Message base management
β”‚   β”œβ”€β”€ scheduler/          # Cron-style event scheduler
β”‚   β”œβ”€β”€ session/            # Session management
β”‚   β”œβ”€β”€ sshserver/          # pure-Go SSH server (gliderlabs/ssh wrapper)
β”‚   β”œβ”€β”€ stringeditor/       # TUI string configuration editor
β”‚   β”œβ”€β”€ telnetserver/       # Telnet server
β”‚   β”œβ”€β”€ terminalio/         # Terminal I/O handling
β”‚   β”œβ”€β”€ tosser/             # FTN echomail tosser (import/export)
β”‚   β”œβ”€β”€ transfer/           # File transfer protocols
β”‚   β”œβ”€β”€ types/              # Shared types
β”‚   β”œβ”€β”€ user/               # User management
β”‚   β”œβ”€β”€ usereditor/         # TUI user editor
β”‚   β”œβ”€β”€ util/               # Utility functions
β”‚   β”œβ”€β”€ version/            # Version information
β”‚   └── ziplab/             # ZIP archive processing and viewer
β”œβ”€β”€ menus/v3/               # Menu set files
β”‚   β”œβ”€β”€ ansi/               # ANSI art files
β”‚   β”œβ”€β”€ bar/                # Lightbar menu definitions
β”‚   β”œβ”€β”€ cfg/                # Menu configuration files
β”‚   β”œβ”€β”€ mnu/                # Menu definition files
β”‚   └── templates/          # Display templates
β”‚       └── message_headers/ # Customizable message header styles (unlimited, 14 included)
β”œβ”€β”€ bin/                    # External helper binaries (not tracked in git)
β”œβ”€β”€ output/                 # Output support files
β”œβ”€β”€ scripts/                # Utility scripts
β”œβ”€β”€ docs/                   # GitHub Pages website (vision3bbs.com)
β”œβ”€β”€ documentation/          # Project documentation
└── tasks/                  # Development task tracking

Setup & Installation

The easiest way to run ViSiON/3 is using Docker:

git clone https://github.com/stlalpha/vision3.git
cd vision3
docker-compose up -d

See Docker Deployment Guide for detailed instructions.

Manual Installation
System Requirements

Go 1.24+ is the only build requirement.

# Verify Go version
go version
Quick Setup
  1. Clone the repository:

    git clone https://github.com/stlalpha/vision3.git
    cd vision3
    
  2. Run the setup script:

    ./setup.sh
    

    This will:

    • Generate SSH host keys
    • Copy template configuration files from templates/configs/ to configs/
    • Create necessary directory structure
    • Create initial data files
    • Build the application
  3. Configure your BBS:

    # Edit configs/config.json with your BBS settings
    nano configs/config.json
    
  4. Build and run the BBS:

    ./build.sh
    ./vision3
    
Manual Setup

If you prefer to set up manually:

  1. Copy configuration templates:

    cp templates/configs/*.json configs/
    # Edit configs/config.json with your BBS settings
    
  2. Build the application:

    ./build.sh
    

    This builds all binaries (vision3, helper, v3mail, strings, ue) to the root directory.

  3. Generate SSH Host Key:

    ssh-keygen -t rsa -b 2048 -f configs/ssh_host_rsa_key -N ""
    
  4. Create directories:

    mkdir -p data/users data/files/general data/logs data/msgbases
    
  5. Run the server:

    ./vision3
    

The server listens on port 2222 by default.

Default Login

The system creates a default user on first run:

  • Username: felonius
  • Password: password

IMPORTANT: Change this password after first login!

Connecting

Connect using any SSH client:

ssh felonius@localhost -p 2222
SyncTerm and Retro Terminal Support

ViSiON/3 fully supports SyncTerm and other classic BBS terminal emulators:

  • Automatic CP437 encoding for authentic ANSI graphics
  • Compatible with modern SSH algorithms (no legacy crypto needed)
  • SSH-authenticated users bypass the login screen

Download SyncTerm: https://syncterm.bbsdev.net/

Command Line Options

./vision3 --output-mode=auto
  • --output-mode: Terminal output mode (auto, utf8, cp437)
    • auto: Automatically detect based on terminal type (default)
    • utf8: Force UTF-8 output
    • cp437: Force CP437 output for authentic DOS/BBS experience

Configuration

Configuration files are located in the configs/ directory:

Core Configuration

All configuration files are located in configs/ and are generated from templates in templates/configs/ during setup:

  • config.json: Main BBS configuration (BBS name, ports, paths, connection limits)
    • Note: Not tracked in git. Copied from template during setup
    • Includes connection security settings: maxNodes and maxConnectionsPerIP
  • theme.json: Color theme configuration (lightbar colors, prompt colors, ANSI codes)
  • strings.json: Customizable BBS prompts and messages
Message System
  • message_areas.json: Message area definitions (local, echomail, netmail areas)
  • conferences.json: Conference groupings for message and file areas
  • ftn.json: FidoNet/FTN network configuration (addresses, uplinks, packet passwords)
File System
  • file_areas.json: File area definitions (paths, descriptions, access levels)
External Programs
  • doors.json: Door/external program configurations (paths, dropfile types, pause settings)
Security
  • ssh_host_rsa_key: SSH host key (auto-generated on first run if missing)

All configuration files use JSON format and support comments for documentation.

Documentation

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

Acknowledgments

This project is built in tribute to ViSiON/2 and my friend Crimson Blade.

For the original ViSiON/2 BBS (Pascal version), see: vision-2-bbs

Directories ΒΆ

Path Synopsis
cmd
ansitest command
helper command
strings command
Command strings is the ViSiON/3 BBS string configuration editor.
Command strings is the ViSiON/3 BBS string configuration editor.
ue command
Command ue is the ViSiON/3 BBS User Editor.
Command ue is the ViSiON/3 BBS User Editor.
v3mail command
vision3 command
internal
ftn
jam
Package jam implements the JAM message base format (JAM-001 specification).
Package jam implements the JAM message base format (JAM-001 specification).
sshserver
Package sshserver provides a pure-Go SSH server for Vision/3 BBS.
Package sshserver provides a pure-Go SSH server for Vision/3 BBS.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL