Overview (Final Report) - GamifyTasksTeam/GamifyTasks GitHub Wiki

Description (and screenshots)

GamifyTasks allows you to turn responsibilities into games. You create "tasks" out of your responsibilities, and give them point values in different categories. When you complete those tasks, you earn those points.

You can then create "rewards" for yourself out of things you enjoy doing, but maybe should do less of, like going out with friends or playing video games. You then assign point costs to those rewards and "buy" them with points you earned from completing tasks.

The general experience flow of the site is presented below.

Home Page

Home Page The homepage, as seen at gamifytasks.com. It features a basic description of the site, some screenshots of the app, and a clear call-to-action, the signup button.

Sign up/Login page

The user is then brought to a simple page where they are invited to signup/login using a Google account.

Tasks page

Adding tasks and rewards

Adding Tasks Rewards

When the user first logs in, they will see a page with just the forms for adding tasks and rewards. The screenshot demonstrates what the user will see after adding some tasks and rewards, as well as the add rewards forms being utilized.

As shown, a user may "pin" a reward to keep it perpetually on the reward list.

Editing tasks and rewards

Editing Tasks Rewards

Once a user has created tasks and rewards, they are free to edit them. The above screenshot demonstrates what the edit forms for tasks and rewards in use. The forms are automatically populated with the name and scores of the task or reward.

We made the form look as much like the add form as much as possible to keep things clear. Both the add and edit forms have client side validation to make sure the user enters valid points and a title.

Task completion

Task Completed

When the user completes a task, two things occur. First, the task is removed from the list of tasks. Second, the points from the task are added to the user's "wallet". Above we see the user has completed the "Walk the dog" task from above, (as well as a few other tasks) and now has some points because of it.

Reward redemption

Reward Claimed

Once the user has points, they may purchase rewards with them. Above, we see that the user has gone out for some ice cream. The reward has been removed from the list, and the points have been removed from the wallet. The user has the ability to go into debt to obtain rewards.

##Database Schema We used MongoDB, a document database, for storage. Four collections are being used -- User, Wallet, Tasks, and Rewards.

User

{
    _id: string,
    identifier: string,
    profile: {
        displayName: string,
        name: {
            familyName: string,
            givenName: string
        },
        emails: [{
            value: string
        }]
    }
}

This information is populated from data sent by Google after the user logs in.

Wallet

{
    _id: string,
    userID: string,
    red: number,
    green: number,
    blue: number,
    purple: number
}

Related to a user through userID. Tracks the user's points in all four categories.

Task

{
    _id: string,
    userID: string,
    name: string,
    red: number,
    green: number,
    blue: number,
    purple: number
}

An individual task assigned to a user (by userID.) Allows the user to complete a task and increase the points in the wallet.

Reward

{
    _id: string,
    userID: string,
    name: string,
    red: number,
    green: number,
    blue: number,
    purple: number,
    persistent: boolean
}

An individual reward assigned to a user (by userID.) Allows the user to "buy" a reward with points they have previously earned. Additionally, the user may choose to "pin" the reward, so that it stays on the list even after they redeem it.

##Future Work

Key Features

  • Task Scheduling - We feel to make this app something that stands out, the user needs to be able to schedule each task. The user should be able to let some tasks always be available, while others come up on their list periodically, such as every Wednesday.
  • Front page demo - Many apps have a demonstration of their app on their landing page, and we would like to do the same with ours. We would probably give the user demo data, but in the more distant future allow them to save created tasks to accounts when they make them.
  • User profiles - There are a few things we would like to give the user more control over in their account. As mentioned above, users can currently go into debt, but we would like to give the user an option to go into debt or not. Users should also be able to add/remove/change the point categories.

###Other Features

  • Game-like elements - This site is meant to make doing tasks fun by making them game like. There are features that could be added to give it more of a game feel, such as random bonus points and the ability to create chains of tasks, where a new one comes up as soon as an old one is completed.
  • OAuth options - Presently the user can only login using Google. We would like to give them the option to login with other services as well.