← All projects

Android & iOS · React Native

Offload

A minimal, focused GTD (Getting Things Done) app for Android and iOS — capture everything, clarify it once, and work from trusted lists so your brain can focus on doing instead of remembering.

React Native TypeScript Zustand MMKV React Navigation 7 Reanimated

Overview

GTD is a well-defined productivity methodology — but most apps that claim to implement it either bloat it with features that contradict its principles, or reduce it to a simple to-do list that misses the point entirely. Offload is an attempt to implement the full GTD workflow faithfully: a distinct capture step, a structured clarify flow, and separate lists for each outcome type.

The result is eight screens — Inbox, Clarify, Next Actions, Projects, Someday/Maybe, Waiting For, Reference, and Weekly Review — each with a focused interaction model. The Weekly Review screen includes streak tracking and a banner reminder when overdue, nudging the habit that makes the whole system work.

Role

Solo — design, development

Platform

Android & iOS (React Native)

Status

In development

Key features

Inbox & Clarify flow

Rapid capture via a global FAB — the keyboard stays open after each entry for quick multi-item input. The Clarify screen processes each item through the GTD decision tree: actionable or not, single action or project, which context and due date. Nothing sits in the Inbox unprocessed.

Next Actions

Filterable by context (@computer, @phone, @errands, @home, @anywhere), focus star (★), or free-text search. Swipe right to complete, swipe left to delete. Inline editing and a completed history so nothing is lost.

Full GTD landscape

Projects with linked actions and a stalled-project badge in the drawer. Someday/Maybe for ideas without commitment — promote to Inbox when ready. Waiting For tracks delegated items with a follow-up date and overdue highlighting. Reference stores non-actionable items for later lookup.

Weekly Review & export

A guided checklist walks through every GTD review step with streak tracking and an overdue banner to reinforce the habit. A JSON export of all data is shareable via the native share sheet — no lock-in.

Tech stack

Framework

  • React Native 0.84
  • React 19
  • TypeScript
  • React Navigation 7 (Drawer + Stack)

State & Storage

  • Zustand 5
  • react-native-mmkv (sync storage)

UI & Gestures

  • react-native-gesture-handler
  • react-native-reanimated 4

Challenges

  • GTD has eight distinct views, each with its own interaction model. Designing them to feel like a coherent single app — rather than eight separate tools bolted together — required a consistent visual language and shared interaction patterns (swipe actions, inline edit) applied carefully across screens.
  • Swipe-to-complete and swipe-to-delete on the same row required coordinating react-native-gesture-handler with Reanimated worklets. The animations need to run on the UI thread to feel native — getting that right without race conditions between gesture state and list re-renders took careful sequencing.
  • The Clarify flow is a multi-step decision tree where each answer determines the next question. Modelling that as a state machine rather than nested conditionals kept the logic testable and made it easy to add new branches without breaking existing paths.

What I learned

  • MMKV is a meaningful improvement over AsyncStorage for user-facing state. Synchronous reads eliminate the flash-of-empty-content problem on navigation — the list is populated before the screen finishes mounting, which is noticeable in a list-heavy app.
  • Reanimated worklets running on the UI thread make swipe interactions feel native in a way that JS-thread animations can't match. The API is more complex, but the payoff in perceived performance is real.
  • Implementing a methodology as a product forced me to think about UX in terms of user mental models rather than just screen layouts. The GTD workflow has a specific logic — any UI that fights it will confuse users who know the system, and fail to teach it to those who don't.

What I'd improve next

Cloud sync with cross-device support is the most significant missing feature — the MMKV storage is fast but local-only. Recurring tasks and notification reminders for due dates would make the Next Actions list more actionable on its own. On iOS, I'd like to add proper haptic feedback on swipe actions and native-feeling transitions. A home-screen widget for quick Inbox capture would also close the loop on the GTD "capture everything" principle without opening the app.