CreatorAppAvailable

Habit tracker app (Keel)

Calm, local-first habit tracker for iOS and Android: daily, set-weekday or N-per-week habits, one-tap medallion check-ins with undo, notes, DST-safe streaks, 16-week almanac with list alternative, pause/archive, and opt-in local reminders. No health claims.

Get Creator

Creator ($9 a month) includes up to 20 new premium families a billing month (5 in any 24 hours). Already a member? Open your library.

Version
1.0.2
Platforms
iOS, Android
Framework
expo
Archive
2.4 MB 127 files

What it does

  • set up a habit (daily, set weekdays, N per week)
  • check in for today with undo
  • add a note to a check-in
  • see streaks and weekly progress
  • review history heatmap or week list
  • back-fill a past day
  • pause, resume, archive, delete
  • opt-in local reminders with permission flow
  • persist across restarts

Screens

  • todayMedallion check-ins, progress, 7-day beads, notes
  • history16-week almanac heatmap or week list with summary
  • habitsActive habits, reorder, archive and settings links
  • archivedArchived habits with restore
  • settingsWeek start, appearance, reminder permission, samples, erase
  • habit-detailStreaks, calendar back-fill, notes, pause/archive/delete
  • habit-formCreate/edit with schedule, colour, reminder and permission flow
  • noteNote for one check-in (form sheet)

States covered

  • Loading
  • Empty
  • No results
  • Error
  • Validation
  • Permission denied
  • Destructive confirm
  • Undo
  • First run
  • Deleted elsewhere

Stack and versions

expo57.0.25
expo-router57.0.23
react19.2.3
react-native0.86.3
typescript6.0.3
expo-sqlite57.0.3
expo-notifications57.0.21
jest29.7.0
jest-expo57.0.5
@testing-library/react-native14.0.1

Commands:

installnpm ci
devnpx expo start
testnpm test
typechecknpx tsc --noEmit
buildnpx expo prebuild && npx expo run:ios | npx expo run:android (or EAS Build)
e2enone automated; native script in docs/VERIFICATION.md
web_previewnpx expo export -p web --output-dir dist && node scripts/preview-screenshots.mjs

Tested

CheckPlatformToolResultDate
dependency pins for Expo SDK 57 native modules (react-native-reanimated 4.5.1, react-native-worklets 0.10.1, react-native-gesture-handler 2.32): expo install --check, npm audit 0, jest, tsc, expo-doctor, Metro iOS + Android bundlesNodenpm 11 + expo install --checkPass2026-09-26
unit + screen tests (42, TZ America/New_York)Nodejest 29.7.0 + jest-expo 57.0.5 + @testing-library/react-native 14.0.1Pass2026-09-26
typecheckNodetypescript 6.0.3 (tsc --noEmit)Pass2026-09-26
expo-doctorNodeexpo-doctor 1.20.4Pass2026-09-26
native project generation (expo prebuild --no-install)Nodeexpo 57.0.25 prebuildPass2026-09-26
web export preview screenshots (not native verification)Web appexpo export -p web + Playwright 1.56 ChromiumPass2026-09-26
fresh-copy reproduction (npm ci, npm test, tsc)Nodenpm 10.9.7 / node 22.22.2, cold Jest cachePass2026-09-26
Release build of this archive: install, launch, relaunch, dark mode; no crash reportsiOSiOS Simulator (iPhone 17 Pro, Xcode 27)Pass2026-09-26
Release build of this archive: install, launch, relaunch, dark mode; no crash in logcatAndroidAndroid Emulator (Pixel 9)Pass2026-09-26

Not included

  • No medical or health claims; no HealthKit/Health Connect
  • Local notifications only: no push service or server; delivery subject to OS focus/battery settings
  • No account, cloud sync, backup or export: data is local to the device
  • No widgets, Live Activities or watch apps
  • No analytics or network calls from app code

Each boundary comes with instructions for adding it in docs/INTEGRATION-BOUNDARIES.md.

Known limitations

  • Native iOS/Android runs and reminder delivery not yet verified by the author (pending custodian run on a Mac)
  • Reminders are planned 14 days ahead and refreshed when the app opens
  • expo-notifications adds the iOS aps-environment entitlement even though only local notifications are used
  • Web export is a layout preview only; reminders unavailable there
  • Phone layout on tablets; JS tab bar (native tabs unstable in SDK 57)
  • Tests need Node >= 22.13 (@testing-library/react-native 14)

Licence

Use in unlimited end products incl. client/commercial; no resale/redistribution as a template, kit or dataset; no ML training. Survives cancellation for delivered versions.

Full terms: Motif template licence. Open-source parts keep their own licences (licenses.json, id lic-premium-habit-tracker-1-0-2).

Ask your agent

Use Motif to activate the premium-habit-tracker template and download it. Then adapt it for a climbing gym's route log: replace the content and imagery, keep the design tokens and every state in docs/STATE-MATRIX.md, and run check_design_contract before you finish.

Motif guides applied

app-design-gate-workflow · app-category-health · app-reference-gentler-streak-ethical-dataviz · app-reference-focus-friend-single-purpose-calm · app-transplant-test-no-generic-template-app · app-template-tab-fab-onboarding-budgets · app-visual-identity-system-five-decisions · app-functional-truth-rulings · app-screen-state-matrix · app-empty-states · app-onboarding-first-value · app-destructive-actions-undo-vs-confirm · app-notifications-permission-and-etiquette · app-permission-requests-and-recovery · app-form-validation-feedback · app-save-model-and-unsaved-changes-guard · app-local-persistence-choice-expo · app-sqlite-data-model-offline-first · app-tab-bar-implementation-expo-router · app-theming-light-dark-system · app-dynamic-type-and-font-scaling · app-touch-targets-and-spacing · app-react-native-accessibility-semantics · app-safe-areas-and-edge-to-edge · app-haptics-usage-guidelines · app-back-navigation-ios-android · app-platform-conventions-vs-brand · sys-accessible-chart-text-alternative-and-data-table · sys-chart-selection-by-question

Archive

SHA-256 cd7d9072653fff844ffb249f98befd0ddd4ada60231b7da27a20abc8fec41f07