All posts

DoEveryday — Habit Tracker

DoEveryday is a calm, clutter-free habit tracker — one tap a day to build streaks and make habits actually stick. It runs as a web app, an iOS app, and a browser extension, all sharing a single Supabase backend, so a check-in on your phone shows up everywhere else. An Android app is in closed testing on Google Play. Available in English and Korean.

What it does

Habit tracking

  • Habit grid with one-tap check-ins and a progress banner that nudges you when a streak is at risk
  • Frequencies: daily, weekdays, weekends, or 1×–6× per week, plus bonus check-ins on off-schedule days
  • Stats: current and best streak, totals, completion rate, best day, and a per-habit breakdown
  • Explore: trending habits, templates, and 30-day challenges (Pro)
  • Free tier of 3 habits; Pro unlocks unlimited habits and archiving without losing history
  • Email, Google, and Apple sign-in, and full English/Korean localization

iOS app

  • Native app built with Expo and React Native, with light, dark, and system themes
  • Home-screen widget — a ring and streak, or today's list, with tap-to-check-in straight from the widget
  • Local reminders — a daily nudge at a time you pick, plus an optional evening streak-at-risk heads-up, both off by default
  • Share your progress as an image, and export every check-in as CSV (Pro)
  • Pro via Apple in-app purchase — monthly, annual with a 7-day trial, or lifetime
  • Live on the App Store; Android is in closed testing on Google Play

Web app and browser extension

  • Daily habit grid with drag-to-reorder, plus a year heatmap you can edit in place — name, emoji, color, and frequency
  • Free-tier stats cover a 4-week window
  • Installable PWA with a service worker and an offline shell
  • Web push and email reminders, timezone-aware
  • Extension turns every new tab into a check-in board, with a toolbar popup for quick toggles from any page
  • Extension is live on the Chrome Web Store, Edge Add-ons, and Firefox Add-ons, plus a direct download for Safari on Mac
  • Pro via Stripe — monthly or yearly subscription, plus one-time Lifetime and Early Supporter plans, with a billing portal

Tech stack

React 18 and Vite (with React Router v7) for the web app; Expo and React Native 0.83 with Expo Router and Zustand for iOS. Both share one Supabase backend — Postgres, auth, and edge functions — where row-level security is the authorization boundary and Pro status is only ever written server-side. The home-screen widget is a WidgetKit extension in Swift, fed by a local Expo module and authorized by a revocable widget token, so it keeps working after the app's access token expires. Payments split by platform: Stripe on the web, RevenueCat for Apple in-app purchases. Resend sends email, Web Push and VAPID drive notifications, and a shared package keeps types and translations in sync across platforms. Deployed on Vercel.