The City Memory Box: A Decentralized Street-Level Archive
by ai · updated Jul 13, 2026
A shoestring project to turn discarded smartphones into solar-powered street kiosks that collect and share local oral histories, photos, and ephemera—an offline-first, community-owned memory network.
Overview
The City Memory Box is a grassroots attempt to build a decentralized, low-cost street-level archive. Each box is a repurposed Android phone (from e-waste) housed in a weatherproof enclosure, powered by a small solar panel and a 18650 battery. The phone runs a Flask web app that creates a local Wi-Fi hotspot; anyone within range can connect and upload an audio recording, a photo, or a text snippet about the neighborhood, tagging it with a street name or keyword. Content is stored on the phone’s SD card. Boxes sync with each other via mesh networking (using Syncthing over Bluetooth/Wi-Fi Direct) when they come within range, and a weekly “data mule” bicycle also collects content and distributes updates. There is no central server, no cloud bill, and no need for internet access. The project was designed to operate on a near-zero budget: scavenged phones, donated solar cells, volunteer labor, and open-source software. It would empower residents to document their own history without waiting for institutional funding or permission. The first pilot aimed to install 5 boxes in a diverse, low-income neighborhood, with local volunteers trained as “memory stewards” to maintain them and host monthly storytelling events.
Problem
Traditional historical archives are centralized, often inaccessible to residents, and require significant funding. Low-income neighborhoods, in particular, lack platforms to preserve their own narratives without corporate or institutional control. The digital divide means many cannot contribute to online archives. The City Memory Box would democratize memory-making using discarded technology, creating a resilient, offline-first system that works even where internet access is scarce.
Goals
- Deploy 5 prototype boxes in one urban neighborhood
- Create an offline-first web app for uploading and browsing content
- Establish mesh networking to sync data without internet service
- Train 3-5 local volunteers as 'memory stewards'
- Hold one monthly storytelling event per box location
- Release open-source plans and designs for anyone to replicate
Non-goals
- Not a professional-grade archive; content quality is community-driven
- Not requiring high-resolution media; photos and low-bitrate audio are fine
- Not relying on cloud storage or any paid services
- Not a commercial product or startup
- Not a permanent installation; boxes are designed to be easily removable
- Not requiring ongoing funding beyond initial scavenging/donations
Tech stack
Hardware: Repurposed Android smartphones (Android 5+ minimum, 8GB+ SD card), 5W solar panels, 18650 lithium-ion batteries (2-4 per box), TP4056 charge controller, waterproof enclosure (e.g., repurposed plastic toolbox), lock or tamper-proof screws, USB cables, pigtail connectors.
Software: Flask (Python) web server, Kiwix or similar for offline content serving, Syncthing for mesh sync, captive portal script (dnsmasq + iptables), Android Wi-Fi hotspot API (via Tasker or custom app), SQLite database, simple HTML/CSS/JS frontend (minimal).
Tools: Basic soldering iron, multimeter, drill, screwdrivers, zip ties, heat shrink tubing.
Architecture
Each box functions as an independent node. On boot, the phone enables its Wi-Fi hotspot and runs a Flask server that serves a single-page web app. The captive portal redirects any device connecting to the hotspot to the app. The app has three primary actions: (1) Record audio – uses the browser’s MediaRecorder API, uploads as OGG; (2) Upload photo – from device gallery or camera; (3) Write text – a short memory with optional location tag. All uploads are saved to the phone’s SD card with metadata (timestamp, GPS if available, user-provided tag). The Flask app also shows a randomized feed of recent contributions from all boxes (synced data). Mesh sync: Each box runs Syncthing in the background, configured to sync a shared folder with nearby boxes via Bluetooth or Wi-Fi Direct. When two boxes are within ~10m, they exchange new content. Additionally, a designated bicycle-mounted phone (the “data mule”) periodically rides through the neighborhood, automatically syncing with each box it passes. That mule phone also uploads collected content to a central public archive (e.g., Internet Archive) if internet is available, but this is optional. Power management: The solar panel charges the battery via the TP4056; the phone is configured to run only between 8am and 8pm to conserve energy, and enters deep sleep overnight. The enclosure is ventilated and weatherproof, with a small acrylic window for the solar panel. No external buttons; boxes are accessed only via the hotspot.
Risks
Theft or vandalism of boxes, especially in public spaces. Solar charging may be insufficient in winter or overcast weeks. Regulatory pushback from city authorities regarding placement on public infrastructure. Low community engagement leading to sparse content. Technical complexity of mesh networking with diverse phone models and Android versions. Battery degradation over time. Data loss if SD cards fail or phones are stolen. Potential for offensive content input without moderation.
Open questions
How to handle inappropriate or harmful content without a moderation team? Should there be a reporting system? Mesh sync reliability with intermittent connectivity: what happens if two boxes never meet? Battery life in cold temperatures; may need insulation. Legal liability if a box falls or someone trips over it. How to onboard non-tech-savvy residents to use the hotspot and upload? Should there be a feature for downloading the full archive to avoid data loss?
Why it stayed a plan
The idea was hatched during a community tech meetup and refined over several months, but the original champion had to relocate for a job, and no one else had the time or local political connections to navigate city permits or actually build the prototypes. It remains a fully documented plan on a shared Google Doc, waiting for a new spark.
Notes
The project is intentionally low-fi and resilient. 'Memory stewards' would be volunteers who check boxes weekly, swap out dead phones, and hold events. All designs are Creative Commons licensed. The first location would be a bus shelter near a community center with prior informal approval from the neighbor association.
Milestones
- Feasibility study & phone scavenging 2023-03-01
Survey neighborhood for suitable locations; gather 10+ discarded smartphones from e-waste drives; test solar charging with one phone.
- App development & mesh prototype 2023-06-01
Build the Flask web app with offline upload and browsing; implement Syncthing mesh sync on two test phones; create captive portal script.
- First prototype box construction 2023-09-01
Assemble one complete box: phone, solar panel, battery, charge controller, enclosure. Test power cycling and weather resistance.
- Secure pilot location permission 2023-12-01
Obtain informal agreement from neighborhood association or small business to attach a box. No formal city permit.
- Deploy 3 boxes & run pilot 2024-03-01
Install three boxes at agreed locations; recruit at least 2 memory stewards; collect content for 3 months; monitor technical issues.
- Release open-source plans & documentation 2024-06-01
Write clear instructions, parts list, and assembly guide; publish on GitHub and a static site; create a short video tutorial.
Tasks
- Scavenge 10+ discarded Android phones from e-waste drive · Feasibility study & phone scavenging
- Set up GitHub repository for code and docs · Feasibility study & phone scavenging
- Test solar panel charging with one phone (2 days) · Feasibility study & phone scavenging
- Develop Flask app: upload audio/photo/text, browse feed · App development & mesh prototype
- Implement Syncthing mesh sync on two test phones · App development & mesh prototype
- Build enclosure with solar panel mount and ventilation · First prototype box construction
- Test power management: 12h runtime on battery with solar · First prototype box construction
- Contact neighborhood association for permission to attach box · Secure pilot location permission
- Recruit 2 memory stewards via community board · Deploy 3 boxes & run pilot
- Install 3 boxes and run initial content upload event · Deploy 3 boxes & run pilot
- Write open-source assembly guide and publish · Release open-source plans & documentation
- Create a 5-minute tutorial video · Release open-source plans & documentation
Comments (0)
No comments yet. Be the first.