Challenge Overview
RE-volv is a solar energy crowdfunding platform. The platform allows individuals to donate to solar energy projects. RE-volv then re-invests the money the projects' saved by switching to solar into more solar energy projects.
The goal of this challenge is to automatically add donor and donation information from RE-volvs crowd funding website to to the client’s Salesforce Org (Salesforce for Nonprofits). The existing website will be modified to send donor information to the SalesForce org. As part of this challenge, we want to implement Apex web service on Salesforce side to receive incoming donor/donation information and determine if it is a new or existing donor. New donor records are created when the donor doesn’t exist, and for both new/existing donors, a record of the donation is created (SF Opportunity). Additionally, the client would like for new donors to be automatically added to the mailing list in mailchimp.
The base package model is available here and contains the record types, custom fields etc. - https://test.salesforce.com/packaging/installPackage.apexp?p0=04t1b0000004hH4
Key terms
-
The ‘Opportunities’ object is called Donations
-
Contacts are typically referred to as ‘Donors’
-
Each donation has a ‘Primary Contact’ in the ‘Donor’ role
- Donations need to roll-up to a donor (contact)
Web Services & Functionality
We envision the following web services will be required for this challenge.
/login - A new user registers -> Add a record to Contacts + add user's email in mailing list in mailchimp + send out an automatic email
Parameters passed -> Donor Name, Project Name, Email, Donor Address*
*Donor Address - is an optional parameter in the format - Street #, Street, City, State, Country. If passed, use this field to populate the 'Mailling Address of the Contact being created'. Include the donor address in the email sent out if it was passed in the web service call
/donation - A user donates -> Add a record for opportunity (donation) + send out an automatic email with details of donation made using MailChimp. The email is retrieved via contact record.
Parameter passed -> Donor Name, Project Name, Donation Amount, Donor Address*
*Donor Address - is an optional parameter in the format - Street #, Street, City, State, Country. If passed, Include this in the email sent out if it was passed in the web service call
MailChimp Integration
- Needs to be done using the MailChimp API
- Build a configuration page to store MailChimp API key into a custom object/ store it in custom settings
- Please use email templates rather than directly hardcoding the email body
Data Model
Refer the above base package.
- Campaign - Maps to the project to which donation is made, will have one of the following values
Kehilla
Shawl-Anderson
Other Avenues
Operations
Solar Seed Fund
Final Submission Guidelines
You need to provide the following
- Unmanaged package consistent of all Apex classes, VF fields and data model
- Good quality test code and coverage for the exposed API endpoints
- Deployment Guide with complete steps for deployment and verifcation. Instructions on how to test your API endpoints with email verification fully working
- A demo video of your app in action