Logo Queschan
Queschan

Queschan

By Dr. Nothing
💛 Support Dr. Nothing directly 💳 Donate
Current Version: 3.0.0
16
Unique Views
4
Free Downloads
0
Donation Downloads

Queschan

A lightweight, file-based anonymous discussion platform. No database required — everything is stored as JSON files. Built with PHP 8.2. > "Q is to Question"

Features

  • Channel-based boards — Create and manage topic channels, each with its own post feed
  • Threaded comments — Nested replies up to 3 levels deep
  • Privacy modes — Choose between hashed tripcodes (HMAC-SHA256) or fully anonymous posting
  • ASCII art images — Uploaded images are converted to ASCII art to deter illicit content
  • Rate limiting — 5 posts per minute, 50 posts per day per IP
  • Math CAPTCHA — Simple addition challenge to block automated submissions
  • Admin panel — Tabbed control panel for settings, theming, content, and channel management
  • Dynamic theming — Full color scheme customization via live color pickers, no CSS editing needed
  • Channel view tracking — Total and unique visitor counts per channel
  • Search — Full-text search across all channels and comments
  • RSS feeds — Per-channel RSS 2.0 feeds via rss.php
  • Open Graph tags — Rich previews when sharing posts on social media
  • Localized timestamps — Post times rendered in the visitor's local timezone via JavaScript
  • Requirements

  • PHP 8.2 or higher
  • PHP extensions: gd, json, mbstring
  • Web server (Apache or Nginx) with PHP support
  • Write permissions on the server for data/, posts/, and images/ directories
  • Installation

  • Upload all files to your web server.
  • Ensure the web server can write to the project root (for auto-created directories).
  • Open setup.php in your browser.
  • Fill in your site name, slogan, privacy mode, and admin password.
  • Click Install.
  • Delete setup.php from the server after setup is complete.
  • Navigate to index.php to start using your site.
  • Directory Structure

    
    /
    ├── index.php          # Main application (home, channels, posts, admin panel)
    ├── about.php          # Dynamic about page (content editable from admin panel)
    ├── setup.php          # One-time installation wizard (delete after use)
    ├── changelog.html     # Version history
    ├── styles.css         # Stylesheet
    ├── data/
    │   ├── config.json    # Site configuration (name, theme, admin hash, privacy mode)
    │   ├── channels.json  # Channel definitions
    │   ├── about.json     # About page content
    │   ├── rate_*.json    # Per-IP rate limit records
    │   └── views_*.json   # Per-channel view counts
    ├── posts/
    │   └── <channel>.json # Posts and nested comments for each channel
    └── images/
        └── ascii_*.png    # ASCII-art converted images
    

    Admin Panel

    Log in via the hidden Admin toggle at the bottom of any page. The panel includes four tabs:
    TabDescription
    GeneralSite name, slogan, homepage description, privacy mode, admin password
    ThemeLive color pickers for all UI variables
    About PageEdit the title and HTML content of the About page
    ChannelsCreate new channels or delete existing ones

    Privacy & Security

  • IP addresses are never stored in plaintext. Poster IDs are derived using HMAC-SHA256 with a randomly generated per-install secret.
  • In Anonymous mode, no ID is displayed at all.
  • Admin passwords are stored using PHP's password_hash() (bcrypt).
  • All user-supplied content is escaped with htmlspecialchars() before output.
  • File writes use exclusive locks (flock) to prevent race conditions.
  • Error logging rotates automatically at 5 MB.

Limits & Constants

SettingValue
Max post length4096 characters
Posts per minute5
Posts per day50
Max comment depth3 levels
Log rotation size5 MB

License

Copyleft 2025 The Brown Hats Collectives.

Download Options

Free Download: Source code is freely available below.
Compiled Versions: Support development with a PayPal donation.

Free Downloads

📦 Download Source Code

Changelog

Changelog

All notable changes to Queschan are documented here.

[3.0] - 2025-11-06

Added

  • setup.php installation wizard for first-time configuration
  • Dynamic data/config.json replaces all hardcoded site settings
  • Admin Panel 2.0 with tabbed interface: General Settings, Theme, About Page, Channels
  • Live color picker in Theme tab for full UI customization without editing CSS
  • Configurable privacy modes: Hashed IDs (HMAC-SHA256 tripcodes) or Anonymous
  • about.php with admin-editable content, replacing the static about.html
  • Changed

  • Refactored index.php core logic, reducing file size by ~45% while adding new functionality
  • Administrator authentication migrated to PHP passwordhash() / passwordverify()
  • [2.12] - 2025-05-10

    Added

  • rss.php generating RSS 2.0 feeds per channel (fixes 404 errors on RSS links)
  • Fixed

  • Restored search functionality (form and results display) that had been temporarily removed
  • [2.11] - 2025-05-05

    Changed

  • Channel listing on homepage now sorts by latest activity first (most recent post or comment), then alphabetically
  • [2.10] - 2025-05-04

    Fixed

  • iptoalpha function no longer raises "Undefined array key" errors; added strict IP validation via filter_var and bounds checking for character indices
  • Improved error logging for invalid IP addresses and index issues
  • [2.9] - 2025-05-03

    Added

  • Client-side timestamp localization using <span data-timestamp> elements, displaying times in the visitor's local timezone
  • Changed

  • Extracted all inline CSS from index.php into a separate styles.css file
  • Fixed

  • Updated color scheme to meet WCAG 2.1 Level AA contrast ratios (4.5:1 for normal text, 3:1 for large text and UI components)
  • [2.8] - 2025-04-30

    Added

  • View count tracking per channel, showing total views and unique visitor counts
  • Changed

  • Comment nesting capped at 3 levels to improve readability
  • [2.7] - 2025-04-25

    Added

  • ASCII art conversion for image uploads to deter illicit content while preserving visual context
  • Open Graph meta tags for improved social media link previews on posts and comments