Skip to content

Habits Widget

Shows the habits you have scheduled for today from a Habits instance, and lets you tick them off without leaving the homepage.

Requirements

  • A running Habits instance reachable from the homepage server (not just your browser — the homepage proxies the API)
  • A Habits account

Configuration

KeyTypeDefaultDescription
habitsUrlstringBase URL, e.g. https://habits.example.com
emailstringThe email you sign in to Habits with
passwordstringThat account's password
hideCompletedbooleanfalseDrop habits already done, leaving only what's outstanding

About the password

It is stored in this homepage's database and sent to the homepage server, which signs in on your behalf. That is the same arrangement the FreshRSS, Navidrome and Umami widgets use, but Habits holds a personal record — consider a dedicated account if the dashboard is shared.

Features

  • Lists only the habits scheduled today, so a weekday habit is absent at the weekend
  • Click the circle to complete a habit; click again to clear it
  • Multi-target habits (8 glasses of water) advance one at a time, and the circle fills as a wedge showing how far round you are
  • Timed habits fill straight to their target in one click — the tick means "I did this", and the app's own timer is the other way in
  • "N times a week/month" habits show progress against the period (2/3) rather than a daily target, because no single day is required
  • Current streak beside each habit, and done/total in the header
  • Refreshes every 60 seconds, and immediately after you tick something

How it works

The browser never talks to Habits directly. Your configuration is posted to the homepage server, which signs in, caches the 15-minute access token in memory, and proxies the request. When the token expires the next call gets a 401 and the server signs in again — you never see it.

Habits also issues refresh tokens, which this widget deliberately ignores. They are single-use and rotate, so two widget calls arriving together would each spend the same one and whichever lost would be signed out.

Notes

  • Completing a habit sends no date. Habits records it against today in the timezone configured on your Habits account, which is more reliable than anything the homepage could work out.
  • The widget decides what is "scheduled today" itself, mirroring Habits' own rule. A schedule type added to Habits in future would need adding here too.

Personal Homepage Dashboard