Crate meshbbs

Source
Expand description

§Meshbbs - Bulletin Board System for Meshtastic Networks

Meshbbs is a modern Bulletin Board System (BBS) designed specifically for Meshtastic mesh networks. It provides traditional BBS functionality over long-range, low-power radio networks using LoRa technology.

§Features

  • Meshtastic Integration: Direct communication with Meshtastic devices via serial or Bluetooth
  • Message Boards: Traditional BBS-style message topics and forums
  • User Management: Role-based access control (User, Moderator, Sysop)
  • Security: Argon2id password hashing with configurable parameters
  • Async Design: Built with Tokio for high performance

§Quick Start

use meshbbs::config::Config;
use meshbbs::bbs::BbsServer;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Load configuration
    let config = Config::load("config.toml").await?;
     
    // Create and start BBS server
    let mut server = BbsServer::new(config).await?;
    server.run().await?;
     
    Ok(())
}

§Module Organization

  • bbs - Core BBS functionality including server, sessions, and commands
  • meshtastic - Meshtastic device communication and protocol handling
  • storage - Message and user data persistence layer
  • config - Configuration management and validation
  • validation - Input validation and sanitization utilities
  • protobuf - Protocol buffer definitions for Meshtastic integration

§Architecture

Meshbbs uses a modular architecture with clear separation of concerns:

┌─────────────────┐
│   BBS Server    │ ← Core application logic
└─────────────────┘
         │
┌─────────────────┐
│   Meshtastic    │ ← Device communication
│   Interface     │
└─────────────────┘
         │
┌─────────────────┐
│   Storage       │ ← Data persistence
│   Layer         │
└─────────────────┘

§Examples

See the examples/ directory for complete usage examples and the main binary implementation in src/main.rs for a full application example.

Modules§

bbs
BBS (Bulletin Board System) Core Module
config
Configuration Management Module
logutil
Logging utilities for sanitizing multi-line user/content strings so logs stay single-line. Escapes control characters that otherwise break log readability.
meshtastic
Meshtastic Device Communication Module
metrics
Minimal metrics scaffolding (Phase 3) This will later be extended with Prometheus exposition and histograms.
protobuf
Generated protobuf modules
storage
Storage Module - Data Persistence Layer
validation
Username validation module for security and compatibility