3 min read
Changa

Changa

Changa is a mobile-first PWA built around a very specific real-world task: treasurers in Kenyan WhatsApp groups tracking contributions as payments come in via M-Pesa, bank transfers, or cash. The goal wasn’t just to digitize a list - it was to cut out the repetitive editing loop and make posting accurate updates feel instant on a phone.

Problem

Fundraisers are often coordinated in WhatsApp, but the operational workflow is still manual. A treasurer receives a payment notification, edits the existing message, adds the new contributor, recalculates the running total, and reposts the update to the group. That creates unnecessary friction in a high-frequency task and introduces room for mistakes, especially when everything is happening on mobile and in real time.

Solution

The real problem wasn’t storing data - it was the copy-paste loop the treasurer had to do after every payment. Changa separates data capture from message formatting: record a contribution once, and the app handles numbering, totals, progress tracking, and WhatsApp-ready output. Campaigns support multiple concurrent fundraisers, reusable templates cut down repetitive formatting, and local-first storage keeps everything fast, private, and usable without a signal or an account.

Product Engineering Decisions

  • Built around the actual task: quick contributor entry, fast copying, low friction on mobile
  • Went local-first so the app works reliably in the same environments where WhatsApp coordination happens - often on mobile, often with patchy connectivity
  • Skipped the backend entirely because the core value is speed and convenience, not syncing across devices
  • Added template variables and summary generation so the app fits into how groups already communicate, rather than asking people to change their habits

Tech Stack

  • HTML, CSS, and vanilla JavaScript
  • localStorage for client-side persistence
  • Service Worker for offline support
  • Docker and Nginx for deployment

Highlights

  • Multi-campaign support for running several fundraisers at once
  • WhatsApp-focused message generation with reusable header and footer templates
  • Dynamic variables such as {{campaign}}, {{total}}, {{count}}, {{target}}, and {{remaining}}
  • CSV export and shareable contribution summaries
  • Installable, mobile-first PWA built as a lightweight single-page app

Demo