Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stoop

A neighborhood gift-exchange you hang on a pole: an open Wi-Fi dead-drop where a passerby takes a story and leaves a story — and the box slowly becomes a portrait of the block. Offline, no cloud, no accounts. The digital cousin of the Little Free Library, the puzzle exchange, and the sidewalk notice board.

Software-first (runs on a laptop now), bound for an ESP32 later.

Run it

No dependencies, no build step — just Python 3.8+ (standard library only).

# Run the box (serves on http://<this-device-ip>:8080)
python3 -m src.server

# Test
python3 -m unittest discover -t . -s tests

Open http://localhost:8080 on the same machine, or http://<laptop-LAN-ip>:8080 from a phone on the same Wi-Fi — the closest laptop-era stand-in for joining the box's own network. Contents persist to data/entries.json (gitignored).

Reaching it from a phone (and the firewall / VPN / WSL2 gotchas, across OSs): docs/RUNNING.md.

"Not secure"?

The browser says "Not secure" because a Stoop serves plain HTTP — on purpose. It's an open, anonymous, no-accounts community board with nothing secret on the wire; HTTPS would break the captive-portal flow and burden the device for no real gain. What "secure" actually means here, and which seams matter, is written down: docs/THREAT_MODEL.md and decision 0001.

License & spirit

MIT — take it, fork it, hang your own. If you build a Stoop, theme it, or improve the firmware, that's the whole idea. Made in Portland; meant to spread.

Status: software v1 complete (majors 01–04, minors 31–32) — the Exchange (take a story, leave a story), the forgetting engine (the box stays small and full, composting the least-kept entry; tap keep to hold one), the Murmur (a second tab: the weather of the block), the keeper surface + theming (one codebase becomes a story-box, rock-box, or glowing phosphor tips-terminal; a local secret-gated /admin console prunes and re-themes), and the full guard layer (length cap, body ceiling, connection timeout, per-client throttle). Every seam in the threat model is closed. The only remaining major — and the natural pause for a hardware build — is major 05, the ESP32 embodiment.

Make it your own (keeper)

Set a secret, run, and visit /admin:

STOOP_KEEPER_KEY="your-secret" python3 -m src.server   # then open /admin

Pick a theme (story / rocks / tips) and a skin (paper / phosphor), or set a custom prompt. With no key set, the keeper surface is disabled — an un-configured box has no admin, by design.

About

A neighborhood gift-exchange you hang on a pole: an open Wi-Fi dead-drop where a passerby takes a story and leaves a story, and the box slowly becomes a portrait of the block. Offline, no cloud, ESP32-bound.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages