React Native app template · iOS & Android source

Plan a day you can actually finish.

Taskavyn is the complete source of a native day planner. Tasks are captured in one line, placed on a time ruler that flags overlaps and work that ran past, measured against a daily focus capacity, and finished in focus sessions that keep time from timestamps — even after the app is closed.

  • 9 app screens
  • 56 Jest tests
  • 5 Maestro device flows
  • 0 servers needed
Taskavyn on the iOS Simulator: a day with the week strip, the capacity ruler showing the plan is over capacity, a task not placed yet and the start of the time ruler
iOS Simulator · iPhone 17
Taskavyn on the Android Emulator: the Inbox quick add turning one typed line into estimate, priority, day, time and area
Android Emulator · API 36

Every screen on this page is a screenshot of the release build of this source, running on the iOS Simulator and the Android Emulator with the included fictional demo plan. This page is a showcase; it is not the app and does not run it.

Three core journeys

From intention to a finished day

01 Capture and prioritize

One line in, a structured task out

The quick-add parser reads estimates, priority, day, time, area, deadline and repetition from plain text and previews the result before saving. It is a local rule set — no AI, no network.

Draft brief 45m !must tomorrow @9:30 #work
  • Must / Should / Could, shown by shape as well as colour
  • Separate planned day, time block and deadline
  • Every day, every N days, weekdays, chosen weekdays, monthly
Inbox on iOS: the quick add line is parsed into chips for 45 minutes, Must, the day, 09:30 and Work before it is saved
Inbox · iOS

02 Arrange the day

A time ruler that tells the truth about the plan

Blocks are sized by duration on a ruler with quarter-hour ticks, a daylight band and a now line. Overlaps sit side by side and are named; work that ran past is marked. One tap moves a block to the next free slot, 15 minutes either way, tomorrow or back to the inbox.

  • Capacity ruler: planned work against your daily focus capacity
  • Unfinished work from earlier days waits for a decision — nothing moves silently
  • Every action is a plain tap with a spoken label — no drag-only moves
Time ruler on Android: blocks sized by duration and two overlapping work blocks side by side, marked as an overlap
Day ruler · Android
Block actions on iOS for an overlapping task: start focus, mark done, move to the next free slot, 15 minutes earlier or later, choose a time, tomorrow, back to inbox
Block actions · iOS

03 Focus and review

Sessions that keep time, days that close on purpose

A focus session stores when it started and how long it was paused, so the remaining time is right after the app is backgrounded or killed. With permission, a local notification marks the end; when time is up you choose: done, 15 more minutes, or stop. The review asks for one line and a decision on every unfinished item.

  • Pause, +5 minutes and a distraction counter
  • Denied notification permission is explained, and the timer still works
  • Planned-versus-done week chart
Focus on iOS after the app was force-quit for over a minute: the session is still running with the correct remaining time and the same end time
After a force-quit · iOS
Review on iOS with planned, done and focused totals and Tomorrow, Let go and Done decisions for each unfinished item
Review · iOS

Built for the device

Dark mode, the largest text and real back behaviour

The ruler stretches with the system text size, both themes come from one config, sheets close with Android back, and Reduce Motion removes animation without hiding anything.

A day in dark mode on iOS with the week strip, capacity ruler, an unplaced task and the time ruler
Dark · iOS
Review on iOS at the largest accessibility text size: the summary cards stack vertically and nothing is cut
Largest text · iOS
Inbox on Android in dark mode at 200 percent font size: the Add button wraps under the field
Font 200% · Android
Task editor on Android with Cancel and Save, notes, estimate, priority, area and repeat controls
Task editor · Android

Native verification

What was run, and what was not

Builds were made from the extracted buyer package after npm ci. A browser can't prove a native app works, so this page reports device results separately.

TargetWhat ranResult
JavaScriptTypeScript check, ESLint, 59 Jest tests (dates and DST, recurrence, plan and conflicts, timer recovery, storage, the three journeys, large-text layout policies, icons hidden from screen readers), expo-doctor 21/21Passed
iOS SimulatorRelease build (Xcode 27.0, iPhone 17 · iOS 26.5) from the delivered ZIP; 5/5 Maestro device flows; Reduce Motion; dark mode, largest accessibility text and force-quit restorePassed
Android EmulatorRelease APK (arm64, Pixel 7 profile · Android 16 / API 36) from the delivered ZIP; 5/5 Maestro device flows; 200% font regression; animations removed; dark mode and force-stop restorePassed
Rebrand trialRenamed copy (new name, IDs, colours, font, icons, one record): verify, native project generation, iOS Release build and launch; zero old-name traces in app code and native projectsPassed
Galaxy A24 (Android 16)Release APK from the delivered ZIP, fresh install: 5/5 Maestro flows in one run, 200% font, animations removed, ruler scrollingPassed
iPhone 14 Plus (iOS 26.6)Signed Release build from the delivered ZIP, fresh install: first run, capture and restart, overlap fix, focus across background and a full restart, review and deep links; Apple's accessibility audit on seven screensPassed
VoiceOver and TalkBackBoth screen readers on the phones: headings, buttons, tabs, the block action sheet and quick add read with their labels; two issues found on the A24 (icon characters, Turkish capitals) were fixed and re-checkedPassed
Performance on hardwareiPhone cold launch to first frame about 0.19 s (Instruments); Galaxy A24 ruler scrolling 0.03 % janky frames, cold start about 1 sPassed

Your own build, signing and devices are what you ship, so run the included Maestro flows and a screen reader on your target phones before release. On Android the device flows ran with notification permission granted by the test runner; the denied state is covered by the tests and shown in the app.

Install

Run it on a simulator in minutes

  1. Install and check

    npm ci
    npm run verify
  2. Run on iOS (macOS + Xcode)

    npx expo run:ios
  3. Run on Android (SDK + JDK 17+)

    npx expo run:android
  4. Drive it end to end (optional)

    maestro test .maestro
Node.js
20.19.4+, 22.13+ or 24.3+
iOS
macOS, Xcode 26+, iOS 16.4+ target
Android
SDK 36, JDK 17+, Android 7.0 (API 24)+ target
Stack
React Native 0.86.3 · Expo SDK 57 · Expo Router · TypeScript
Data
On-device; JSON export and import
Docs
START-HERE, source map, native builds and signing, rebranding, data, integrations

Publishing to the App Store or Google Play needs your own Apple Developer Program and Google Play developer accounts. No store listing, TestFlight or APK download is provided here.

Make it yours

One config file, one icon command

// brand.config.js
appName: 'Taskavyn',
scheme: 'taskavyn',
iosBundleIdentifier: 'com.webloomery.taskavyn.demo',
palette: {
  light: { commit: '#0B6E78', signal: '#B8401F', … },
  dark:  { commit: '#5CC2CC', signal: '#FF8A66', … },
},
fonts: { display: 'Literata_600SemiBold', … },
  1. Edit name, scheme, bundle IDs, colours and fonts in brand.config.js.
  2. Run npm run icons to regenerate the app icon, adaptive icon, splash and notification icon.
  3. Change copy in src/i18n/en.ts and the demo plan in src/data/demo.ts.
  4. Run npx expo prebuild --clean and build.

Scope

Included, and honestly not

Working in the app

  • Quick capture parser with live preview
  • Time ruler, overlap lanes, ran-past state, now line
  • Next free slot, nudges, move to tomorrow or inbox
  • Capacity ruler and projected finish time
  • Recurring tasks with per-day done, skip, move and time
  • Timestamp focus sessions and a local end alert
  • Day review, week chart, explicit carry-over
  • On-device storage, JSON export/import, demo and erase
  • Deep links, light and dark themes, onboarding

Not included

  • Accounts, sign-in and cloud sync
  • Remote push notifications and a push server
  • Calendar sync, widgets, Live Activities
  • Team sharing
  • AI planning (the parser is rule-based)
  • App Store / Google Play listings

The storage adapter and docs/INTEGRATIONS.md show where each would connect.

In the package

taskavyn-v1.0.0.zip

taskavyn/
├─ START-HERE.md · BUYER-README.md · LICENSE.txt · ASSET-CREDITS.md
├─ app/                 screens (Expo Router)
├─ src/domain/          dates, recurrence, plan, timer, quick add
├─ src/state/           store, reducer, storage boundary
├─ src/components/      time ruler, capacity ruler, week strip, sheets
├─ src/i18n/en.ts       every string
├─ brand.config.js      name, IDs, colours, fonts, icons
├─ assets/brand/        generated icons and splash
├─ __tests__/           Jest: domain, storage, journeys
├─ .maestro/            device flows
└─ docs/                source map, native builds, rebranding, data, integrations