Cadence — task planner app
Offline-first iOS/Android task planner in Expo: one-sentence quick add with editable date/repeat/project detection, Today with overdue lane, 7-day Upcoming, projects, steps, daily/weekly repeats, local reminders with at-intent permission, undo everywhere.
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.7 MB 126 files
Screens from the build
(open full size)
(open full size)
(open full size)
(open full size)
(open full size)
(open full size)App screenshots may come from an Expo web export; those are labelled as such and are not native verification. Native runs are listed under Tested with their own status.
What it does
- quick add with natural-language date, time, repeat, priority and project
- plan today: overdue lane, move all to today, due today, done today
- plan ahead: next seven days and later
- complete with undo; recurring tasks advance to the next occurrence
- schedule date, time, repeat and local reminder
- break work into steps
- organise into projects with manual order and move between projects
- search and filter by status, due date, priority and project
- persist on device across restarts; export JSON; erase all
Screens
todayToday ribbon, overdue lane, due today, done today, first-run choicesupcomingNext seven days, later dates, per-day addinboxTasks without a project, manual orderprojectsProjects with open/overdue counts, create, deleteprojectRename, colour, ordered tasks, completed, deletetaskEdit, schedule, repeat, reminder, priority, project, steps, historyaddQuick add modal with interpretation chipssearchSearch with filters and no-results recoverysettingsTheme, week start, time format, notifications, export, erase
States covered
- Loading
- Empty
- Cleared
- Error
- No results
- Validation
- Destructive confirm
- Undo
- Permission undetermined
- Permission denied
- Permission unsupported
- Overdue
- Unsaved changes
Stack and versions
| expo | 57.0.25 |
|---|---|
| expo-router | 57.0.23 |
| react | 19.2.3 |
| react-native | 0.86.3 |
| typescript | 6.0.3 |
| expo-sqlite | 57.0.3 |
| expo-notifications | 57.0.21 |
| jest | 29.7.0 |
| jest-expo | 57.0.5 |
| @testing-library/react-native | 14.0.1 |
Commands:
| install | npm ci |
|---|---|
| dev | npx expo start |
| test | npm test |
| typecheck | npx tsc --noEmit |
| doctor | npx expo-doctor |
| build | npx expo run:ios | npx expo run:android (local dev build) or eas build |
| e2e | manual native script in docs/VERIFICATION.md |
| web_preview | npx expo export -p web |
Tested
| Check | Platform | Tool | Result | Date |
|---|---|---|---|---|
| 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 bundles | Node | npm 11 + expo install --check | Pass | 2026-09-26 |
| unit + screen tests (104) | Node | jest 29.7 + jest-expo 57 + @testing-library/react-native 14 | Pass | 2026-09-26 |
| type check | Node | typescript 6.0.3 | Pass | 2026-09-26 |
| expo-doctor | Node | expo-doctor | Pass | 2026-09-26 |
| native project generation (prebuild, not compiled) | Node | expo prebuild --no-install | Pass | 2026-09-26 |
| token contrast WCAG AA | Node | scripts/check-contrast.mjs | Pass | 2026-09-26 |
| web export preview screenshots — not native verification | web | expo export -p web + Chromium 1194 (Playwright) | Pass | 2026-09-26 |
| fresh-copy reproduction (npm ci, npm test, tsc) | Node | npm 10.9 / node 22.22 | Pass | 2026-09-26 |
| Release build of this archive: install, launch, relaunch, dark mode; no crash reports | iOS | iOS Simulator (iPhone 17 Pro, Xcode 27) | Pass | 2026-09-26 |
| Release build of this archive: install, launch, relaunch, dark mode; no crash in logcat | Android | Android Emulator (Pixel 9) | Pass | 2026-09-26 |
| local notification delivery | iOS | iOS device or simulator | PendingNot run yet | — |
| local notification delivery | Android | Android emulator or device | PendingNot run yet | — |
2 checks still pending. Pending means it hasn't been run yet, not that it passed.
Not included
- No account system: data is local to the device
- No cloud sync, sharing or collaboration; no network calls
- Reminders are local notifications only (no server push); web preview cannot deliver them
- No calendar integration, import, widgets or Siri/App Intents
- No analytics or telemetry
Each boundary comes with instructions for adding it in docs/INTEGRATION-BOUNDARIES.md.
Known limitations
- Native iOS/Android runs and notification delivery not yet verified on a simulator or device
- Repeats are daily/weekly (with intervals and weekdays); no monthly/yearly rules
- Quick-add grammar and UI strings are English only
- Phone layouts only (iOS phone-only; Android tablets get the phone layout)
- Tab bar hides on pushed detail screens
- Reorder uses Move up/down buttons and screen-reader actions, not drag
- Tests require Node 22.13+ (React Native Testing Library 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-task-planner-1-0-2).
Ask your agent
Use Motif to activate the premium-task-planner 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-productivity · app-template-tab-fab-onboarding-budgets · app-transplant-test-no-generic-template-app · app-visual-identity-system-five-decisions · app-functional-truth-rulings · app-hard-fail-signatures-static-checks · app-navigation-architecture-selection · app-tab-bar-implementation-expo-router · app-sqlite-data-model-offline-first · app-local-persistence-choice-expo · app-destructive-actions-undo-vs-confirm · app-swipe-actions-with-accessible-alternatives · app-save-model-and-unsaved-changes-guard · app-permission-requests-and-recovery · app-notifications-permission-and-etiquette · app-dynamic-type-and-font-scaling · app-react-native-accessibility-semantics · app-touch-targets-and-spacing · app-empty-states · app-screen-state-matrix · app-search-filters-and-no-results-recovery · app-theming-light-dark-system · app-safe-areas-and-edge-to-edge
Archive
SHA-256 25fac2d0e034444b9281ce3da26e43b6a1ec5d2b5491ad5857d31dc2a7237cb7