ioby — short for "In Our Backyards" — is a social microfunding web service that connects people and money to site-based environmental projects (presently only in the New York City area). All of the projects funded through ioby are conceived, designed, and run by neighbors.
Ioby worked with New Signature to develop the new site, using Drupal 7 as the platform. The previous site, while Drupal-based, was extremely limited in scope and functionality, and needed to be reworked. Drupal 7 provided a powerful and flexible platform that answered ioby’s need for a robust e-commerce and collaborative social community solution. New Signature developed the ioby Drupal 7 website to be fast, responsive and handle huge amounts of traffic.
The new site provides a five step process to empower visitors to help make a difference:
- pick a project
- nurture it through funding
- follow the results
- get your hands dirty and inspire others
- prepare for great things
The optional sixth step is “rinse and repeat.”
A few key parts of the application built for ioby hadn’t been tried using Drupal 7 or, more importantly, Drupal Commerce previously. Because the site is donation-centric and needed to accept donations of any amount, the first challenge was to make a product to place in the cart that didn’t have a set price associated with it. In order to do this, the systems created the product "on the fly" as the donation is placed into the cart. The second challenge was to create a system that allowed users to also give a 20% gratuity directly to ioby. The third challenge was to enable sponsors to match the donation amount as part of a campaign for matching funds for a project.
The first challenge was handled by using a simple form that allows the user to enter the amount of the donation they want to give to a project. This form submit creates a new commerce product using the Entity API system. The product is instantiated and customized with the donation amount, and then placed into the cart. Each product in the Commerce module requires a unique SKU, so the system generates one based on the user's name, the project title, and a date reference to assure no products are duplicated.
For the second challenge, gratuity was at first going to be a tax type in the Commerce system. However, one of the requirements was to also give the user the ability to remove the gratuity if they felt that they didn’t want to cover the costs for it — a feature Commerce doesn't support with tax (for obvious reasons). To enable that ability, the gratuity is a line item (re)calculated every time the cart is updated. Once again we used the Entity API to generate a new product, and this time the gratuity type that has an individual SKU, and a price that is a percentage of the order total. Another custom feature we added was to show a popup message when a user removes the gratuity, explaining to them the importance of gratuity for ioby. Since the view doesn’t discriminate between the different line items, it was necessary to use some jQuery to handle this feature.
For the third challenge - giving corporations and sponsors the ability to match the donation amount – we couldn’t just add line items to the donation (like how user-submitted donations are handled) as this would change the donor information. Instead, we had to add a new panel to the checkout process that let the donator know that the sponsor was helping the cause as well. The sponsor was tied to the project by campaign node, using the new Drupal 7 database API to make direct calls to the database and tie the sponsor, campaign, project and donation together. Once the bond is created, a donation match is created and funds are applied to the project without charging the user.