Skip to content

Dashboard API

GET /dashboard

Returns weekly stats, streak data, and per-category progress for the current user. This is the primary data source for the home screen.

Auth required: Yes

Query parameters:

ParamTypeDescription
user_datestringUser's local date (YYYY-MM-DD). Default: server date

Response (200):

json
{
  "week": {
    "completed": 4,
    "remaining": 3,
    "overdue": 1,
    "days": [
      {
        "label": "M",
        "date": "2026-05-25",
        "has_tasks": true,
        "completed": true,
        "task_count": 2,
        "completed_count": 2,
        "is_today": false
      },
      {
        "label": "T",
        "date": "2026-05-26",
        "has_tasks": true,
        "completed": false,
        "task_count": 1,
        "completed_count": 0,
        "is_today": true
      }
    ]
  },
  "streak": {
    "current": 5,
    "best": 12,
    "streak_freeze_available": true
  },
  "categories": [
    {
      "name": "Health",
      "icon_key": "heart",
      "color": "health",
      "completed": 2,
      "total": 3
    },
    {
      "name": "Finance",
      "icon_key": "dollar-sign",
      "color": "finance",
      "completed": 1,
      "total": 2
    }
  ]
}

Week Object

The days array always contains 7 entries (Monday through Sunday) for the week containing user_date. Each day indicates:

  • has_tasks -- whether any tasks are due on this day
  • completed -- whether at least one task was completed on this day
  • task_count / completed_count -- raw counts for progress indicators

Streak Object

  • current -- consecutive days with at least one completion
  • best -- all-time best streak
  • streak_freeze_available -- whether the user can auto-freeze a gap (Pro/Family only, once per 7 days)

TIP

The streak freeze is applied automatically during streak calculation. If a Pro/Family user missed exactly one day and hasn't used a freeze in the last 7 days, the streak is preserved.

Categories Array

Per-category task progress for the current week. Only categories with tasks due this week are included.

bash
curl "http://localhost:3000/api/v1/dashboard?user_date=2026-05-26" \
  -H "Authorization: Bearer <token>"

Internal documentation — not for public distribution