ReliefHub hackfest: helping orphanages in Haiti

Last month I had a very unique experience: I took a week off from my day job to work with a team of volunteers to build “ReliefHub,” an online charity site designed to help orphanages in Haiti. It’s still unfinished, but here’s what the site looks like right now:

After the terrible earthquake in January 2010, Rousseau Aurelien and James McElhiney started ReliefHub with this mission:

ReliefHub is dedicated to working with orphanages around the world to help perpetuate their effectiveness and provide a foundation for gathering the resources they require to continue to care for millions of orphans and abandoned children.

Initially the site will help orphanages in Haiti, but may expand it’s scope in the future. We’ve also put the source code on github and hope that someday it can become a general open source platform for online charities.

The ReliefHub business model was designed to be similar to Donor’s Choose, a successful online charity supporting school children and teachers across the country. The idea is that on the site you’ll be able to see a list of orphanages:

... and donate any amount of money towards one or more of their very specific needs. Once donations reach the target amount, ReliefHub’s operations in Haiti will purchase the items and deliver them to the orphanage.

As you can see, in a week we were able to build the foundations of the web site, but the user interface still needs some polish and there are a variety of functional user stories that are still not complete. A team of developers from ThoughtWorks is now continuing to work on the site. I’ll post an update here with a link once the site is finished and live online.

If you’d like to help out finishing the site, just contact me and I’ll put you in touch with ReliefHub. As I mentioned above, all of the code is open source: ReliefHub needs both volunteer Rails developers and web designers to finish the site up.

Volunteering: A way to work with great people and new ideas

Aside from actually being able to do something to help the worsening situation in Haiti, the best part of the ReliefHub hackfest was having the chance to with a great group of people, using ideas and technologies that I had never used before.

Part of the team, left to right: Yan, Alex, James M., Dan and Rousseau

Rousseau Aurelien and James McElhiney: After the earthquake in January, James and Rousseau conceived of the ReliefHub idea. Rousseau has been working to find orphanages in Haiti for the site, while James did a lot of the technical planning and development work himself.

Tiffany Karl and Amy Grandov were our product owners - they collaborated ahead of time to come up with the user stories on our backlog.

Melissa Yasko designed the site and James Torio converted Melissa’s design into HTML/CSS.

Thomas Newton and Alex Rothenberg worked together together to develop the rotating slide show of orphanage images for the home page using the Showoff JQuery plugin. Alex also implemented the code for showing the orphanage photos across the site using Paperclip and S3.

Yanwing Wong worked with James McElhiney to implement a login form integrated with Twitter and Facebook, using Janrain Engage with the Devise gem. See Ryan Bates’ screen cast for more info on this.

Dan Croak jumpstarted the project on Rails 3 using ThoughtBot’s suspenders and also setup a continuous integration server for us in a matter of just minutes using CI Joe on an Ubuntu server graciously donated to us for the week by Rails Machine.

Dan also helped the team get up to speed on the latest testing tools and ideas from ThoughtBot, like Bourne, Shoulda RSpec matchers:

describe Project do
  let(:project) { Factory(:project) }

  it { should belong_to(:organization) }
  it { should have_many(:donations) }

... and Factory Girl cucumber steps:

Scenario: Visitor reviews project
  Given the following organization exists:
    | name                          |
    | Mission des Eglises Baptistes |
  And the following project exists:
    | name                | funds purpose           | organization              
    | Christmas Toy Drive | New or gently used toys | name: Mission des Eglis...

Dan taught us a lot more than this, and also singlehandedly implemented a number of the user stories.

Matt Deiters implemented some other key user stories, did a lot of user interface implementation work and also wrote a rake task to seed our database with development data.

Heinrich Klobuczek used the http_accept_language gem to provide internationalization support, and then proceeded to translate the site into French himself... despite being Polish! We’ll have to have Rousseau check his French soon... lol.

Doel Sengupta helped us by testing the app on Windows and posted a couple of tips for getting Cucumber and Rails 3 working on Windows 7.

Finally, Jordan Johnson and I spent most of the week working with the Amazon Flexible Payment Service; Amazon FPS allows you to collect payments without storing credit card information yourself. They also have a nice option that allows non-profits to avoid transaction fees. Right now we are using the Remit gem; I’m still looking at some other gems and plugins out there for Amazon FPS/Rails integration.

All in all it was a fantastic, productive week - a great collaboration among people who came together from very different places and companies. While we weren’t able to start and finish the entire site in one week, we did get the project off to a good start, and I’m sure ReliefHub will be live online fairly soon.