A local resilience toolkit — a suite of clone-and-own tools for community organizers and mutual aid groups. It runs entirely in the browser with no central server: collaborators sync directly over WebRTC and data persists locally in the browser via IndexedDB.
- Dashboard — a single landing view across the tools below.
- Status board — track the state of people, places, or tasks during an event.
- Mutual aid — post and claim needs and offers.
- Phone tree — organize a call and contact chain for fast outreach.
- Consensus builder — run a simple group decision or vote.
- Event creator — set up and coordinate an event.
- Tactical whiteboard — a shared canvas for planning.
- Secure share — hand off a text payload through an encrypted, link-based exchange (see
services/crypto.ts). - Sightings — log reports from the field (uses the camera when you grant permission).
- Offline-first: state is stored locally with
y-indexeddb, so the app keeps working without a connection. - Peer-to-peer sync: collaborators share state directly over
y-webrtc(Yjs), with no central database. - Clone and own: fork the repo, host the static build yourself, and the toolkit stays under your control.
- React 19 and TypeScript, built with Vite
- Tailwind CSS for styling, lucide-react for icons
- Yjs (
y-webrtc,y-indexeddb) for sync and local persistence - Web Crypto for the secure-share payloads
- Some features call the Gemini API; provide a key only if you use them
Prerequisites: Node.js.
- Install dependencies:
npm install
- For features that call Gemini, set
GEMINI_API_KEYin.env.local:GEMINI_API_KEY=your-key-here - Start the dev server:
npm run dev
Build a static bundle with npm run build, then serve the dist/ output from any static host.
Early-stage. The tools run in the browser today, but this is a clone-and-own starting point to adapt for a specific group. Review the code — especially services/crypto.ts — before relying on it for anything sensitive.