Skip to content

Instantly share code, notes, and snippets.

@rtablada
Created December 26, 2017 17:01
Show Gist options
  • Save rtablada/1c0355085689b279c8b09f5da32ab719 to your computer and use it in GitHub Desktop.
Save rtablada/1c0355085689b279c8b09f5da32ab719 to your computer and use it in GitHub Desktop.
  1. User can login with Twitter
{
  resolutions: [
    // Period Object
    {
      userId: GUID,
      name: String,
      start: Date,
      end: Date,
      items: [
        {
          name: String,
          completed: true,
          completedAt: Date?,
          goalQuantity: Number,
          completedQuantity: Number,
          completedTimes: [ Date ]  // Computed completedTimes.length?
        }
      ]
    }
  ],
  weeklyGoals: [
    {
      userId: GUID,
      name: String,
      weekStart: Date, (time + day selected),
      goalQuantity: Number,
      weekProgress: [
        {
          start: Date,
          end: Date,
          goalQuantity: Number,
          completedQuantity: Number, // Computed completedTimes.length?
          completedTimes: [ Date ]
        }
      ]
    }
  ]
}
  1. User can set preferences?
  • Start of week
  • Timezone?
  1. User can see list of periods across
  2. User can create period
  • Name
  • Start (Date Picker)
  • End (Date Picker)
  1. User can see weekly goals
  2. User can add new weekly goal
  • Name
  • Quantity Goal
  1. User can add goal for a period
  • Name
  • Quantity Goal (if applicable)
  1. User can mark goal for current period as complete
  2. User can complete a numeric goal
  3. User can see time period progress
  4. User can see goal progress
  • Period.computeCompletePercent = items.reduce((accum, item) => accum + item.computeCompletePercent() / items.length)
  • item.computeCompletePercent = function () { return this.goalQuantity ? this.completedTimes.length / this.goalQuantity : this.completedAt }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment