Skip to content
CS 169 redeemify
Branch: master
Clone or download
Pull request Compare This branch is 253 commits ahead, 69 commits behind greeddiscient:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Code Climate Test Coverage

Redeemify: let users redeem "bundles" of offers

How it works:

  1. A user receives a "redemption code" (AKA "Redeemify Code" like a gift card code), perhaps because they paid for it, or perhaps as a result of buying something.

  2. User creates an account on Redeemify by presenting that redemption code and then "linking" it to whatever SSO they login with (Google, GitHub, Facebook, etc.) (Without a redemption code, a user can't create an account.)

  3. That redemption code "unlocks" a list of additional redemption codes from different vendors, to be redeemed at their respective sites.

Terminology and model names

For this discussion, we'll use the following specific use case:

  1. User buys a copy of "Engineering Software as a Service" on Amazon

  2. User receives a redemption code via separate email from Amazon after purchase

  3. User signs up on Redeemify with that code and their Facebook credentials.

  4. Once in their account, user sees promo codes for GitHub (1 month of free Micro), CodeClimate (1 seat for 1 month), and TravisCI (Premium account for 1 month).

  5. The user logs in or signs up on GitHub, CodeClimate, and Travis, and redeems the respective codes.

In this scenario:

  • A User is someone who has an account on Redeemify. An AdminUser (different model) is a user who can administer the site.

  • is the Provider: the entity that provides a redemption code that will allow the user to sign up here. A Provider provides a list of valid redemption codes. The idea is one code is handed out with each purchase, and that code enables a User to login to Redeemify with their choice of 3rd party auth. Once a particular code has been associated with an identity on Redeemify, it can't be associated with another identity, i.e. a RedeemifyCode can only be redeemed once.

  • GitHub, CodeClimate, etc. are each a Vendor: an entity that provides some promotion that is part of a redemption bundle. The promotion is represented by a VendorCode. For example, a GitHub VendorCode might be a string that can be redeemed as a promo code on GitHub for a month of free Micro account.


Service Status
You can’t perform that action at this time.