Homepage (site/index.html): integration-v14 promoted, Writings section integrated with 33 pieces clustered by type (stories/essays/miscellany), Writings welcome lightbox, content frame at 98% opacity. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.8 KiB
Meshagora
A social platform simulator for teaching digital literacy. Runs as a local web server on an Android phone (via Termux), participants join through their browsers over WiFi — no internet required, no app install, no persistent data.
Designed for workshop facilitation. Every session starts clean. All data lives in memory and is destroyed when the server stops.
What it teaches
Meshagora recreates the mechanics of real social platforms in a controlled, observable environment:
- Tiered posting access (who gets amplified, who gets restricted)
- Pseudonymity vs. identity (session labels vs. confirmed friends)
- Community reporting and auto-restriction
- Algorithmic feed ordering (invisible vote weights)
- Handshake-based friend networks and friends-only feeds
- Flood attacks (bot accounts)
- Admin surveillance — the platform sees everything participants don't
Requirements
Python 3.8+
flask
qrcode[pil]
Quick Start — Termux (Android, recommended for sessions)
pkg install python git
pip install flask qrcode[pil]
git clone https://github.com/JL-Kruger/meshagora.git
cd meshagora
- Enable the Android mobile hotspot before running the script.
- Run:
python3 meshagora.py - The startup banner prints the join URL, QR code link, and all post keys.
- Participants connect to the hotspot WiFi and open the join URL in any browser.
See DEPLOY.md for the full pre-session checklist, admin panel guide, and troubleshooting.
Quick Start — Desktop (testing)
pip install flask qrcode[pil]
python3 meshagora.py
Server runs at http://127.0.0.1:5000. Open multiple browser tabs or incognito windows to simulate multiple participants.
Architecture
Single-file Flask application (meshagora.py). No framework, no database file, no external assets. SQLite runs in-memory. threaded=False is mandatory — do not change it.
Post tiers
| Tier | Key length | Who has it |
|---|---|---|
| ADMIN | 4 emoji | Facilitator only |
| TRUSTED | 2 emoji | Promoted users |
| DEFAULT | 2 emoji | All registered users (rotates on restriction events) |
| RESTRICTED | co-sign | Users restricted by admin or community report |
Feed ordering
- Highest-score post pinned to top
- Middle posts ordered newest-first
- Lowest-score post pinned to bottom
Auto-restriction
When unique reporters exceed 51% of a user's total posts, that user is automatically restricted and the Default Post Key rotates silently.
Files
| File | Purpose |
|---|---|
meshagora.py |
Complete implementation |
meshagora_spec_v2_3.md |
Full design specification |
DEPLOY.md |
Deployment guide, troubleshooting, pre-session checklist |
Stopping the Server
Ctrl+C in the terminal. All session data is gone immediately. This is intentional.