Habits & Streaks / Daily Streak Engine & Heatmap
Habits & Streaks
5 min read

Daily Streak Engine & Heatmap

How daily study streaks are calculated, goal thresholds, activity heatmaps, and maintaining long-term momentum.

How Streaks are Calculated#

A Study Streak represents the number of consecutive calendar days you have actively studied and met your daily learning goal.

  • Dynamic Evaluation: Mudawim evaluates your streak dynamically from your studyDates array.
  • Timezone Aware: Dates are recorded in your browser's local timezone (YYYY-MM-DD).
  • Consecutive Chain: A streak is considered Active if your most recent study date is either Today or Yesterday.
text
Active Streak Example:
[2026-09-01] ──> [2026-09-02] ──> [2026-09-03] ──> [2026-09-04 (Yesterday)] ──> [Today]
Result: 4-Day Active Streak (Studying today advances it to 5 Days 🔥)

Daily Study Goal Criteria#

Your study session qualifies as a completed study date when either:

  1. Daily Watch Minutes Goal: You watch at least your daily goal minutes (default: 30 minutes), OR
  2. Daily Videos Goal: You complete at least your target number of lessons (default: 3 lessons).

Meeting your daily goal automatically logs the date to studyDates, updates your weekly activity distribution, and advances your streak counter.


12-Week Study Heatmap Matrix#

The Streak & Analytics page displays a 12-week GitHub-style activity matrix:

  • Empty Square: No study activity logged on that date.
  • Light Accent: Partial study time logged (below daily goal).
  • Deep Accent: Daily goal successfully completed and streak incremented.
  • Hover over any block to view the exact minutes studied, videos completed, and timestamp details.

Broken Streak Detection#

If a day passes without studying (e.g., today is September 7th, but your last study date was September 4th), your consecutive chain is interrupted.

  • When an uninterrupted chain is broken, the streak status transitions to Streak Paused (if within repairable limits) or Streak Ended (if the gap exceeds repair limits).