Skip to content

fix: calculate daily streak using user local timezone#1811

Merged
Priyanshu-byte-coder merged 1 commit into
Priyanshu-byte-coder:mainfrom
jahnavi-karanwal:streak-calculation
Jun 2, 2026
Merged

fix: calculate daily streak using user local timezone#1811
Priyanshu-byte-coder merged 1 commit into
Priyanshu-byte-coder:mainfrom
jahnavi-karanwal:streak-calculation

Conversation

@jahnavi-karanwal
Copy link
Copy Markdown
Contributor

Summary

Fixed timezone-related streak calculation issues in src/app/api/metrics/streak/route.ts by ensuring commit dates and streak boundaries are calculated using the user's local timezone instead of raw UTC dates.

Closes #897


Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • Refactor / code cleanup

Changes Made

  • Updated fetchActiveDates() to convert GitHub commit timestamps into the user's local timezone before extracting and storing the date.
  • Fixed date normalization logic to prevent commits near midnight from being assigned to the wrong calendar day.
  • Updated calculateStreakFromDates() to derive today and yesterday using the user's local timezone rather than the server's UTC date.
  • Ensured streak calculations remain accurate for users across all time zones, including positive and negative UTC offsets.
  • Eliminated streak breaks caused by timezone differences between GitHub timestamps and server-side date calculations.

Checklist

  • Linked issue in summary
  • Self-reviewed the diff
  • No breaking changes introduced
  • Added/updated tests if applicable

@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 1, 2026

@jahnavi-karanwal is attempting to deploy a commit to the PRIYANSHU DOSHI's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions github-actions Bot added gssoc26 GSSoC 2026 contribution type:bug GSSoC type bonus: bug fix labels Jun 1, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

GSSoC Label Checklist 🏷️

@Priyanshu-byte-coder — please apply the appropriate labels before merging:

Difficulty (pick one):

  • level:beginner — 20 pts
  • level:intermediate — 35 pts
  • level:advanced — 55 pts
  • level:critical — 80 pts

Quality (optional):

  • quality:clean — ×1.2 multiplier
  • quality:exceptional — ×1.5 multiplier

Validation (required to score):

  • gssoc:approved — counts for points
  • gssoc:invalid / gssoc:spam / gssoc:ai-slop — does not score

Type labels (type:*) are auto-detected from files and title. Review and adjust if needed.
Points formula: (difficulty × quality_multiplier) + type_bonus

@Priyanshu-byte-coder Priyanshu-byte-coder added the level2 GSSoC Level 2 - Medium complexity (25 points) label Jun 2, 2026
@Priyanshu-byte-coder Priyanshu-byte-coder merged commit 866bd16 into Priyanshu-byte-coder:main Jun 2, 2026
10 of 12 checks passed
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 2, 2026

🎉 Merged! Thanks for contributing to DevTrack.

If the project has been useful to you, a ⭐ star on the repo is the easiest way to support it — it helps DevTrack get discovered by more developers.

Keep an eye on open issues for your next contribution!

@Priyanshu-byte-coder Priyanshu-byte-coder added the gssoc:approved GSSoC: PR approved for scoring label Jun 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gssoc:approved GSSoC: PR approved for scoring gssoc26 GSSoC 2026 contribution level2 GSSoC Level 2 - Medium complexity (25 points) type:bug GSSoC type bonus: bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Streak calculation uses UTC dates — breaks for all non-UTC users (e.g. IST, PST)

2 participants