DEV Community

Cover image for I built a no-sign-up glow-up challenge tracker as a single-file PWA
Jacko (Nightlit)
Jacko (Nightlit)

Posted on Originally published at glowstreak.pages.dev

I built a no-sign-up glow-up challenge tracker as a single-file PWA

"Glow-up challenges" (30, 60, 75 or 90 days of small daily habits) are all over TikTok, but most trackers for them want an account, a subscription and your progress photos on their servers before you've checked off day one.

So I built GlowStreak: pick a challenge, tap your habits each day, keep your streak, share a "Day X" story card. No sign-up, English and Spanish, installs to your home screen.

The constraints I set

  • No backend. Everything lives in localStorage on the device. No accounts means no password resets, no GDPR export requests, and nothing to breach.
  • Photos never leave the phone. Progress photos are stored locally and only ever rendered into a share card when you hit share.
  • One file. The app is a single index.html with inline CSS and JS, plus a manifest and a tiny service worker. It deploys to Cloudflare Pages in seconds.
  • Bilingual from day one. All strings sit in one EN/ES dictionary; language defaults from navigator.language.

The bits that were fun

Streaks without a server. A day key is just YYYY-MM-DD in local time, and a streak is "walk back from today while every habit is checked". Doing it in local time (not UTC) matters a lot when someone checks in at 11:50 pm.

The share card. It's drawn on a 1080×1920 <canvas> (Stories size), turned into a File, and handed to the Web Share API with navigator.canShare({files}). On browsers that can't share files it falls back to a download.

Feeling native. Spring-y cubic-bezier transitions, a progress ring with stroke-dashoffset, small navigator.vibrate taps on Android, and a confetti burst when the last habit of the day is checked. Small things, but they're what make people come back on day 2.

Presets

Gentle 75 (miss a day, log it, keep going), Glow-Up 60, Balanced 75, Monk Mode 30, a 30-Day Walk, and Lock-In 90, or your own habits.

Try it / roast it

👉 https://glowstreak.pages.dev

I'd love feedback on the onboarding flow and the share card. What would make you actually open a habit app on day 14?

Top comments (0)