public
Description: Simple raffle management application
Homepage:
Clone URL: git://github.com/melriffe/pickme.git
pickme /
README.textile

Pick Me

A simple app to match sponsored gifts to group members; a raffle manager.

Background

As the organizer to the local ruby users group I occasionally have gifts available for raffle. Using this app I want to be able to have a member sign-up for the meeting’s raffle and have the app select a winner.

Policy

Once a member signs up they are eligible for all raffles. However, if a member wins a raffle they will be excluded from the next raffle. A member does not need to be present to win. A member must come into the next meeting to claim their gift. A member can pass on the gift, putting it back into the raffle prize pool. If there are stipulations or constraints for the gift they will be posted during member sign-up.

The email addresses will be used to notify interested parties of Gift selection.

User Scenarios

  1. As a Member I can provide my name and email address so I can be notified if I’m selected as a raffle winner.
  2. As a Member I can not win a raffle if I already won one within 30-days.
  3. As an Admin I can add Sponsors (contact name and email address) so they can be notified of the raffle winner.
  4. As an Admin I can add Gifts to Sponsors.
  5. As an Admin I can not win a raffle.
  6. As an Admin I can create a Raffle.
  7. As the application I can select a random winner from the available pool of Members, notifying interested parties of the selection.

Domain Model

User

A User for authorization is provided by Clearance. The PickMe User will add a Name and Last Won On attributes. A User can have zero or many Gifts. A User will also record the date they won a Gift. Admins manage Users. A User can participate in zero or many Raffles.

This document will use Member and User interchangeably.

Admin

An Admin is a special User that has access to the Sponsor and Gift management functionality.

Sponsor

A Sponsor will have a company name, contact name and email address. A Sponsor can have zero or many Gifts. Admins manage Sponsors. A Sponsor can participate in zero or many Raffles.

Gift

A Gift belongs to a Sponsor. A Gift belongs to a Member. A Gift will know if it’s part of a raffle. A Gift may have constraints or stipulations that must be met before a winner can take possession. Admins manage Gifts. A Gift will have a description. A Gift, via its Sponsor, can be in zero or many Raffles.

Raffle

The selection of the Gift to give away and the random selection of eligible members; notifications are also generated. Admins manage Raffles. A Raffle can have one or more Sponsors, and by proxy, one or more Gifts. A Raffle will have a raffle date. A Raffle will have a description. A Raffle will have zero or many Members. A Raffle will have zero or many Sponsors. A Raffle will have zero or many Gifts.

Notes/Questions

Won't we need a way to select which gift is available for raffle?  Once a gift has been won it shouldn't be available for another raffle; if it hasn't been won or claimed it will be put back into the pool.

Can a member sign-up but not want to be in the current raffle?

What about SMS notification?

Need to think more about selecting eligible members and dates and raffles.

[RAILS] Need to override model_generator.rb to NOT use fixutures if factory_girl is available.
[RAILS] Any generator that creates fixtures needs to be overridden.

Breadcrumbs?

To Do List

  1. [DRY] Need to DRY up my controllers! Options?
  2. [TEST] Controller Tests