Share Your Holiday Application
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Build Status

Share Your Holiday

It is an unfortunate reality that not every child has presents under their Christmas tree. The amazing people at the Durham, NC Volunteer Center have a program, Share Your Christmas, that matches needy families with donors who can put something special under their tree. They need a new app to help them connect recipients and donors easily, and at scale.

Ideally, they would also like to have it generic enough to also work for Thanksgiving (turkeys) and the start of the school year (backpacks full of school supplies for kids.) Along these lines, we're initially calling the project Share Your Holiday ... hopefully we'll think of a better name along the way!

Even though their current manual process is extremely terrible, other cities have expressed interest in this so this group will potentially be helping kids from all over the country!

For a problem statement including objectives, the current system, and a history see the wiki page Problem Statement

Quick Start

You need:

  • Ruby 2.2 or 2.3
  • Rails 4.2.x
  • Postgres 9.5 (May be changed by team later)
  • PhantomJS (brew install phantomjs on macOS or read instructions)

Basically you need Git, Ruby and Rails. If you have Git, Ruby and Postgres in some version or another you're probably set. But:

Then from a command prompt:

$ git clone
$ cd share_christmas
$ bin/setup
$ rails s

Then navigate to http://localhost:3000 in your browser to view the app. Three user accounts will be available for logging in: Volunteer Center Admin, Organization Admin, and User. Use one of the logins to access the app:

  • Volunteer Center Admin - Has rights for Organization management, Campaign Management, & Recipient Family management
    • Email:
    • Password: password
  • Organization Admin - An organization admin has fewer rights than a Volunteer Center Admin
    • Email:
    • Password: password
  • User
    • Email:
    • Password: password


We are using RSpec for testing. You can run the tests with


or by running the default rake task with


We also use Rubocop to enforce a common style. Our specific Rubocop rules are in rubocopy.yml for easy running.

User Stories

As an admin of a Volunteer Center, I want to:

  • add a new organization
  • create a new campaign
  • manage all affiliated organizations
  • manage all affiliated campaigns

As an Organization Campaign Manager, I want to:

  • add a new donor an organization's campaign
  • add a new recipient to an organization's campaign
  • facilitate a match between a donor and a recipient

As an Individual Donor, I want to:

  • register for an organization's campaign
  • choose a potential recipient to sponsor