Clean Water Nonprofit Runs Fundraising and Field Service Apps on Heroku
Imagine being thirsty, really thirsty. Imagine your closest source of drinking water being either a several mile walk away or nearby in a polluted river or swamp. This is a daily reality for nearly 663 million people in the world—that’s one in ten people on the planet. Water is a fundamental human necessity. Lack of safe water and basic sanitation causes 80% of diseases and more deaths every year than any form of violence, including war. Yet there are simple solutions that can save millions of lives.
charity: water was founded in 2006 to help solve the global water crisis. The organization works to fund clean water projects like hand-dug and drilled wells and water filtration and sanitation systems. Not only is charity: water on a mission to bring clean water to every person on the planet, but the organization is also dedicated to reinventing charity for a new generation of donors and fundraisers.
charity: water also operates a fundraising platform and invites anyone to start their own campaign to raise money for clean water projects. One of their most popular themes is birthdays—many of their individual fundraisers will run a campaign for friends to donate in lieu of traditional presents.
charity: water’s team of nine engineers built and maintain a range of apps beyond their main website. There’s the peer-to-peer fundraising platform and internal app that helps the organization make fundraising decisions. There’s also a dispatch monitor app that measures and analyzes water flow data from a sensor installed on the wells, with a component for field staff to manually record maintenance or observation data.
Re-Building charity: water on Heroku
charity: water’s back-end systems had originally been built on PHP and Java, but they’d become outdated and no longer ideal for supporting their product evolution. The organization decided to re-build their entire fundraising system from scratch. They needed a solution that was flexible enough to support a more agile process, could increase the pace of development, save costs, and easily integrate third-party services, such as their payment processors and general ledger system.
The engineering team was already familiar with the Heroku platform and confident about moving their systems over to Heroku. They knew that the platform-as-a-service model fit their needs, and many consulting partners they had worked with recommended Heroku as their go-to PaaS. The fact that James Lindenbaum, a Heroku founder, was a big supporter of charity: water just added extra incentive.
“Our experience with Heroku has been so seamless—it not only saves us time, but saves on opportunity cost. We don’t have to hire a DevOps role, which means operational budget can be directed to fundraising activities,” says Matthew Eckstein, VP of Engineering of charity: water.
The team has been migrating parts of their system to Heroku using Ruby on Rails connected to a Heroku Postgres database. Their marketing site is currently in PHP running on a traditional hosting solution, and this year they plan to rebuild it on Heroku. Most recently, a system that collects water flow data from sensors installed on wells was built on Heroku. Going forward, anything new will be built on Heroku.
“Heroku Add-ons have saved our team a lot of time and effort. They are really easy to use and easy to integrate,” shared Eckstein.
The developers love the wide range of Heroku Add-ons and they’ve integrated many of them, including: Heroku Postgres, Heroku Redis, Codeship, Fastly, Cloudinary, Rollbar, Sentry, SendGrid, Papertrail, SSL, Adept Scale, MemCashier, Redis To Go, Heroku Scheduler, Deploy Hooks, and Gemfury.
charity: water’s engineers take a test-driven development approach, using Heroku’s Review Apps feature for quality control before merging their new code to the master and deploying it to a Heroku Pipeline. Each developer is responsible for the end-to-end delivery of the feature they’re working on. The team takes full advantage of Heroku’s Git integration and runs continuous integration and continuous delivery processes.
“Heroku’s Review Apps feature is an integral part of our deployment process. Both our engineering and product teams use it to test code and the overall user experience,” says Eckstein.
Getting Set Up with Salesforce
The charity: water development team has recently started the first phase of an organization-wide CRM project. They are currently getting set up with Salesforce CRM and an app from the Salesforce AppExchange called roundCause, which provides a CRM and fundraising solution tailored to nonprofits.
Field App Experience
In 2012, charity: water received a Google grant to build a sensor that measures water flow from their wells and systems and funnels that data into their dispatch monitor app running on Heroku. The innovative app aggregates data in the field, tracks and monitors usage, and helps inform the organization’s sustainability initiatives with partners in the field.
To date, approximately 900 sensors have been deployed in Northern Ethiopia. Once a week, the sensors chirp hourly flow data, giving the organization a very clear picture of water flowing through the system at any given time of day.
Also integrated into the Heroku app is a third-party survey platform designed for water monitoring. Field staff record data from maintenance and observational visits on a tablet. A map integration helps plan routes, logistics, and operations, and pinpoints the current location of maintenance staff and drilling rigs.
Going forward, as charity: water steps up their efforts to solve the global water crisis, their engineering team will grow their innovative initiatives by building new apps on Heroku.
For more information about the charity: water tech stack, read our developer interview with Matthew Eckstein, VP of Engineering for charity: water.