Skip to content

Implement Daily Streak Tracking System (Logic + Persistence) #161

@phertyameen

Description

@phertyameen

Description

Implement the streak tracking system logic, including persistence, updates, and timezone-safe calculations.

  • API Endpoints
  • GET /streaks
  • POST /streaks/update

Database Schema

  • Streaks
  • userId
  • currentStreak
  • longestStreak
  • lastActivityDate
  • streakDates[]

Scope of Work

  1. Backend Logic
  • Increment streak on consecutive-day completion
  • Reset streak if a day is missed
  • Track longest streak
  • Handle timezone-safe date comparisons
  1. Frontend Streak Feature
  • StreakProvider or useStreak()
  • Fetch streak data
  • Update streak after daily quest completion
  • Expose data to UI layer
  1. Suggested State Shape
{
  currentStreak: number;
  longestStreak: number;
  streakDates: string[];
  isLoading: boolean;

  updateStreak(): Promise<void>;
}

Requirements

  • Persistent streak storage
  • Accurate date handling
  • No duplicate updates per day
  • UI consumes streak data via context only

Acceptance Criteria

  • Streak increments correctly
  • Streak resets on missed days
  • Weekly calendar reflects backend data
  • Longest streak tracked
  • Data persists across sessions

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions