Skip to content

WinterArc

WinterArc

An offline-first habit tracker for a fixed run of days. October 1 through December 31 is the winter arc, but you can set any dates. All habit data stays in your browser. No account, no sync, no backend. Ships as a PWA you can add to your home screen, with a warm-up window, rest days, a grid for the full run, per-habit rings and streaks, local reminders, and JSON and CSV export.

0backend calls
2habits to start
PWAinstallable

Problem

Winter arc discipline breaks when the tool assumes a perfect start on day one. Miss a log, and history is lost. Take a rest day, and the streak breaks. Wait for October 1, and you lose a month you could have used to build the habit.

Approach

  • Keep all state in localStorage with no backend and no account, so habit data never leaves the browser and the app works with no network.
  • Ship as a PWA that installs to the home screen and opens on the tracker, with offline support and a service worker that routes notification taps back to the right view.
  • Add a warm-up window: when the arc is weeks away, setup offers a run from today until the day before it starts, then rolls you into the arc with the same habits.
  • Make rest days first class. Mark weekdays as rest and they never count as a miss and never break a streak, and the grid and rings reflect that.
  • Use two optional local reminder slots stored as HH:MM, quiet on rest days, finished days, and while the tab is already in front of you, with an honest fallback when the browser freezes a backgrounded tab.

Outcome

A minimal, installable tracker people actually use. Live at trywinterarc.vercel.app at v1.0.1, with grid, rings, streaks, achievements, a share card rendered to PNG in the browser, and JSON and CSV export plus a copyable prompt for an LLM.

Highlights

  • Offline-first PWA that installs to the home screen and opens on the tracker. Works with no network.

  • Grid for the full run, per-habit rings, streaks, perfect days, and achievements, with rest days that never count as a miss.

  • Warm-up from today until the arc starts, then rolls into the arc with the same habits and original dates.

  • Local reminders for morning and evening, JSON and CSV export, and a share card rendered to PNG in the browser.

Stack

  • TypeScript
  • React
  • Vite
  • Tailwind CSS
  • shadcn/ui
  • PWA