Skip to content

sphildreth/blackboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

68 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Blackboard Logo

Blackboard

A modern terminal-based bulletin board system built with .NET 8

Bringing the nostalgic BBS experience to the modern era

.NET License: MIT Platform Language

Features โ€ข Quick Start โ€ข Documentation โ€ข Contributing โ€ข Support


๐Ÿ“– About

Blackboard is a modern implementation of classic bulletin board systems (BBS), inspired by legendary systems like Telegard, Mystic, and Renegade. Built with .NET 8 and featuring a rich terminal interface, it combines the nostalgic charm of 1980s-90s BBSes with modern reliability, security, and maintainability.

Whether you're a sysop looking to run a retro BBS community or a developer interested in terminal applications and networking protocols, Blackboard provides a solid, extensible foundation with comprehensive features.

โœจ Features

๐Ÿ—๏ธ Core Infrastructure

  • ๐Ÿš€ Modern Architecture - Clean, modular .NET 8 solution with dependency injection
  • ๐ŸŒ Custom Telnet Server - Full ANSI/VT100 support with proper telnet protocol negotiation
  • ๐Ÿ–ฅ๏ธ Terminal Administration - Rich Terminal.Gui interface for system management
  • ๐Ÿ—ƒ๏ธ SQLite Database - Reliable data persistence with WAL mode and connection pooling
  • โš™๏ธ YAML Configuration - Hot-reloadable configuration with file watching
  • ๐Ÿ“ Comprehensive Logging - Structured logging with Serilog (console + file output)

๐Ÿ‘ฅ User Management & Security

  • ๐Ÿ” Secure Authentication - BCrypt password hashing with complexity requirements
  • ๐Ÿ‘ค User Profiles - Customizable profiles with preferences and statistics
  • ๐Ÿ›ก๏ธ Access Control - Permission levels with granular access control
  • ๐Ÿ”’ Session Management - Secure session handling with timeout controls
  • ๐Ÿ“Š Audit Logging - Complete audit trail for administrative actions

๐Ÿ’ฌ Messaging System

  • ๐Ÿ“ง Private Messaging - Secure inbox/outbox with read/unread tracking
  • ๐Ÿ“‹ Public Message Boards - Threaded discussions with moderation tools
  • ๐ŸŽจ ANSI Editor - Built-in ANSI art editor for creative message composition
  • ๐Ÿ” Message Search - Full-text search with pagination support
  • ๐Ÿšซ User Blocking - Block/unblock system for user privacy
  • ๐Ÿ“ˆ Message Quotas - Configurable daily and monthly limits

๐Ÿ“‚ File Management

  • ๐Ÿ—‚๏ธ File Areas - Organized file libraries with permissions and quotas
  • ๐Ÿ“ฅ File Transfers - Upload/download support with approval workflow
  • โญ Rating System - 5-star rating system with user comments
  • ๐Ÿท๏ธ File Tagging - Tag-based organization and search
  • ๐Ÿ“Š Statistics - Download tracking and usage analytics
  • ๐Ÿงน Auto-cleanup - Automatic removal of expired files

๐ŸŽฎ Door Game System

  • ๐Ÿšช Door Registry - Comprehensive door game management interface
  • ๐Ÿ’พ DOS Games Support - DOSBox integration for classic BBS doors
  • ๐Ÿ“„ Drop File Standards - Support for DOOR.SYS, DORINFO1.DEF formats
  • ๐Ÿ”Œ FOSSIL Emulation - Serial port to telnet emulation for legacy compatibility
  • ๐ŸŽฏ Access Controls - User-level permissions and scheduling
  • ๐Ÿ“ˆ Game Statistics - Session monitoring and usage statistics

๐Ÿ–ฅ๏ธ Administration

  • ๐Ÿ“Š Real-time Dashboard - Live system statistics and monitoring
  • ๐Ÿ‘จโ€๐Ÿ’ผ User Management - Comprehensive user administration tools
  • ๐Ÿ”ง Configuration Manager - Hot-reloadable YAML configuration system
  • ๐Ÿ“ Log Viewer - Built-in log analysis and monitoring
  • ๐Ÿ› ๏ธ Maintenance Tools - Database optimization and cleanup utilities

๐Ÿš€ Quick Start

Requirements

  • .NET 8.0 SDK or later
  • Operating System: Linux, Windows, or macOS
  • Terminal: Any ANSI/VT100 compatible terminal or telnet client

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/blackboard.git
    cd blackboard
  2. Build the solution

    dotnet build
  3. Run the BBS

    dotnet run --project src/Blackboard
  4. Connect to your BBS

    telnet localhost 2323

Note: The system starts with the telnet server offline by default for security. Use the admin interface to enable it.

Default Configuration

Setting Default Value Description
Telnet Port 2323 Non-privileged port (23 requires root)
Database data/blackboard.db SQLite database location
Configuration blackboard.yml Main configuration file
Logs logs/ Log file directory
Screens screens/ ANSI screen files

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Telnet Client โ”‚โ”€โ”€โ”€โ”€โ”‚  Blackboard      โ”‚โ”€โ”€โ”€โ”€โ”‚ SQLite Database โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                โ”‚
                       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                       โ”‚                 โ”‚
                โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”
                โ”‚ Terminal UI โ”‚   โ”‚    YAML     โ”‚
                โ”‚  (Admin)    โ”‚   โ”‚   Config    โ”‚
                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Project Structure

Blackboard/
โ”œโ”€โ”€ ๐Ÿ“ src/
โ”‚   โ”œโ”€โ”€ ๐ŸŽฏ Blackboard/              # Main application & Terminal.Gui interface
โ”‚   โ”œโ”€โ”€ ๐Ÿง  Blackboard.Core/         # Core business logic & services
โ”‚   โ””โ”€โ”€ ๐Ÿ’พ Blackboard.Data/         # Data access layer & SQLite management
โ”œโ”€โ”€ ๐Ÿงช tests/                       # Unit and integration tests
โ”œโ”€โ”€ ๐Ÿ“š docs/                        # Documentation & guides
โ”œโ”€โ”€ โš™๏ธ  blackboard.yml              # Configuration file
โ””โ”€โ”€ ๐Ÿ“„ README.md                    # This file

๐Ÿ“š Documentation

๐Ÿ› ๏ธ Development

Building from Source

# Clone and build
git clone https://github.com/yourusername/blackboard.git
cd blackboard
dotnet restore
dotnet build

# Run tests
dotnet test

# Run with hot reload
dotnet watch --project src/Blackboard

Key Technologies

  • Framework: .NET 8.0
  • UI: Terminal.Gui
  • Database: SQLite with Entity Framework
  • Logging: Serilog
  • Configuration: YamlDotNet
  • Security: BCrypt.Net, JWT tokens
  • Testing: xUnit, Moq

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please read our Contributing Guidelines for details on our code of conduct and development process.

๐Ÿšง Current Status

โœ… Completed Features

Phase 1: Core System

  • .NET 8.0 project structure with modular design
  • Custom telnet server with ANSI/VT100 support
  • Terminal.Gui administration interface
  • SQLite database with comprehensive schema
  • YAML configuration system with hot-reload
  • Serilog structured logging

Phase 2: User Management

  • User registration and authentication
  • Profile management and preferences
  • Permission levels and access control
  • Password security with BCrypt
  • Session management and audit logging

Phase 3: Administration

  • Real-time dashboard with system statistics
  • Active sessions monitoring
  • Configuration management interface
  • User management tools
  • System alerts and notifications

Phase 4: Messaging

  • Private messaging with inbox/outbox
  • Public message boards with threading
  • ANSI editor integration
  • Message search and pagination
  • User blocking and preferences
  • Admin moderation tools

Phase 5: File Management

  • File areas with permissions
  • Upload/download with approval workflow
  • File search and tagging
  • Rating system with comments
  • Statistics and auto-cleanup

Phase 6: Door Games

  • Door registry and management
  • DOSBox integration for DOS games
  • Drop file support (DOOR.SYS, DORINFO1.DEF)
  • FOSSIL emulation for legacy compatibility
  • Access controls and scheduling

๐Ÿšง In Development

Phase 7: Inter-BBS Networks

  • FidoNet protocol support
  • QWK/REP packet processing
  • Network configuration interface
  • Message routing and import/export

Phase 8: Enhanced UI

  • Custom ANSI art screens and menus
  • Real-time updates and notifications
  • Enhanced keyboard navigation
  • Template system for dynamic content

๐Ÿ”’ Security

  • System starts with telnet server offline by default
  • Default telnet port 2323 (non-privileged)
  • BCrypt password hashing with salt
  • Comprehensive audit logging
  • Session timeout controls
  • Database WAL mode for better concurrency

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Inspired by classic BBS systems: Telegard, Mystic BBS, and Renegade
  • Built with modern .NET technologies
  • Terminal.Gui for rich console interfaces
  • The BBS community for keeping the spirit alive

๐Ÿ†˜ Support


โฌ† Back to Top

Made with โค๏ธ by the Blackboard community

About

A modern BBS system with old school charm

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published