tinyweb-forum/README.md

2.8 KiB

tinyweb-forum

A decentralized link-sharing forum for TinyWeb. Share URLs and discuss them with other TinyWeb instances over the Reticulum mesh. No accounts, no sign-up, no central server.

Install

pip install tinyweb-forum

Enable the forum in TinyWeb's customize page (/style).

Development

git clone https://git.derickphan.com/lichenblankie/tinyweb-forum
pip install -e .

How it works

  • Each TinyWeb instance stores forum threads and posts in its own forum.db
  • Instances auto-discover each other on the mesh via RNS announces — no manual setup
  • You click "sync now" to exchange content; auto-sync every 5 minutes is optional (toggle on moderation page)
  • At scale, sync uses epidemic gossip: each cycle picks 20 random peers instead of all peers, converging within ~O(log N) cycles
  • Authors are identified by a short pseudonymous hash (no names, no accounts)
  • No global server, no algorithms, no tracking

Features

  • Threads — share a URL or start a discussion with text
  • Replies — reply to threads, with inline URL extraction and "+ save" links
  • Upvotes — toggle upvote/downvote, scores propagate via sync
  • Edit — edit your own threads (new version syncs to peers)
  • Retract — retract your own threads and posts (retraction signal gossips to peers)
  • Peer discovery — instances share known peers during sync, growing the network organically

Moderation

All moderation is local — you control your view:

  • Block author[block] link on posts and thread meta hides all content from that identity across your instance
  • Auto-block — when 3+ of your peers have blocked the same identity, it's auto-blocked for you too (threshold is 3)
  • Mute thread — hide a thread from the listing
  • Keyword filters — hide threads matching keywords
  • Instance sync — choose which peers to sync with; unsync at any time

Sync

  • Instances auto-discover each other via RNS announces — just run the forum and any other forum on the mesh finds you
  • Content is exchanged as JSON over RNS links
  • Manual by default — click "sync now" on the forum listing or moderation page
  • Auto-sync every 5 minutes can be enabled on the moderation page
  • Auto-discovery can also be disabled on the moderation page (manual instance add only)
  • Peer discovery propagates through gossip — each instance shares its known peers during sync
  • Block lists and retractions are gossiped alongside content
  • Only new/updated content is transferred (timestamp-based)
  • When >20 peers, each cycle syncs with a random 20 — content converges epidemically

Storage

  • Threads older than 30 days are auto-pruned (configurable on the moderation page)
  • Set retention to 0 to keep everything indefinitely
  • Forum DB is stored at ~/.tinyweb/forum.db