Skip to content

Streak tracking: schema + increment logic #32

@SaketRane

Description

@SaketRane

Add UserStreak table: { userId, currentStreak, longestStreak, lastCompletionDate, updatedAt }.

Logic:
On module completion, call /api/streak/increment:
If completedAt is the user’s local today and lastCompletionDate is yesterday → currentStreak++.
If lastCompletionDate is today → no double count.
If gap > 1 day → reset currentStreak = 1.
Update longestStreak = max(longestStreak, currentStreak), set lastCompletionDate = today.

Add unit tests: multi-completions same day, DST change, timezone mismatch, gap reset, longest update.

Acceptance criteria: Given seeded users, API updates streak exactly once per day; edge-case tests pass; returns { currentStreak, longestStreak }.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions