Help centre
Questions, answered properly
Installation, reminders, backups, privacy and the awkward edge cases. If your question is not here, the contact details are at the bottom of the page.
Getting started
The basics
What exactly is TaskFlow?
An Android to-do list that stores everything on your device. It has a natural-language capture box, several ways to plan (Today, Upcoming, an Eisenhower matrix, a Kanban board, a calendar), focus tools (Focus mode and a Pomodoro timer), habit streaks and a small analytics dashboard.
Do I need to create an account?
No. There is no account system at all. The first time you open the app you get an Inbox and a sample project, which you can rename or delete.
How much does it cost?
Nothing. There are no ads, no subscription, no premium tier and no in-app purchases — there is nothing to purchase.
Does it work without internet?
It works only without internet, in the sense that it never uses the network at all. The app does not request the Android INTERNET permission, so everything — including search and analytics — is computed locally.
Is there an iPhone, web or desktop version?
Not in version 1.0. TaskFlow is an Android app only. There is no browser app and no iOS app.
Install & updates
Getting it onto the phone
How do I install the APK?
Download the APK on your phone, open it from your notifications or Files app, allow installs from that source when Android asks, then tap Install. The download page walks through all five steps with the exact wording you will see.
Why is it not on Google Play?
Direct distribution keeps the app free of store requirements, keeps the package small and means there is no store account linking your identity to the app. The trade-off is that you install it yourself and updates are manual.
How do I update to a new version?
Install the newer APK over the existing app. Your tasks and settings are kept, because they live in the app's private data directory rather than in the APK. TaskFlow cannot notify you about updates — there is no network permission — so check the download page occasionally.
Will I lose my data if I update?
No, as long as the package name is unchanged (com.taskflow). Note that a debug build uses com.taskflow.debug and is treated by Android as a separate app, so switching between debug and release builds does not carry data across.
Can I install it on a tablet or Chromebook?
Any device running Android 8.0 or newer that allows sideloading an APK should work, including tablets. Android-on-ChromeOS devices vary in whether they allow unknown sources; that is controlled by your administrator.
Using TaskFlow
Day-to-day questions
What can I type into Smart Add?
A lot. Examples that work:
- Call the dentist tomorrow 3pm — date and time
- Standup every weekday at 9am — a repeating task
- Pay rent on the 1st of every month — a monthly repeat
- Review PR #Website !high — project and priority
- Deploy @release @backend — two labels
- Water the plants in 2 hours — a relative time
The features page lists the full grammar.
Why did Smart Add not recognise my project name?
Project names are matched fuzzily against projects that already exist — exact matches first, then prefixes, then close spellings. If nothing matches, the #word stays in your title rather than creating a surprise project. Quote names with spaces: #"Client work".
What happens when I complete a repeating task?
TaskFlow marks the occurrence complete and creates the next one according to the rule, carrying over the title, notes, labels, priority and reminders. If the rule has a limited number of repeats, the count is reduced and the series ends exactly when it should.
Can I undo a completion or a deletion?
Yes — every list action shows an Undo snackbar. If you miss it, an undone completion can be restored from the Completed screen by unticking the checkbox, and a deleted task can be restored from Trash for 30 days.
Do deleted tasks disappear immediately?
No. They go to Trash for 30 days, with a countdown shown once three days remain. A daily cleanup job removes expired items permanently. You can also empty Trash manually, or permanently delete a single task from there.
How do I move a card between board columns?
Use the card's move menu — dragging reorders within a column, and the menu moves a card to another column. The same applies to moving tasks between quadrants on the matrix.
What are the "Important", "Urgent" and "Habit" chips for?
They classify a task beyond priority. Important and Urgent feed the Eisenhower matrix quadrants; Habit marks a recurring task so it appears on the Habits screen with a streak and heatmap.
Data & backups
Where your tasks live
Where is my data stored?
In a local database inside the app's private storage on your phone. Android prevents other apps from reading that directory. Attachments you add are copied there too.
How do I back up my tasks?
Open Settings → Data → Export JSON and choose where to save the file. JSON keeps projects, folders, sections, tasks, labels, reminders and saved filters and is the right choice for a full backup. CSV export is available when you want the data in a spreadsheet.
How do I restore a backup?
Settings → Data → Import, then pick the file. Import runs in a single database transaction, so a failed import leaves your existing data untouched rather than half-merged.
How do I move everything to a new phone?
Export JSON on the old phone, transfer the file (cable, cloud drive, whatever you prefer), install TaskFlow on the new phone and import it. Attachments are not included in the export, so re-add any files you still need.
How do I delete everything?
Settings → Data → Delete all data wipes the database after an explicit confirmation and starts you with a fresh Inbox. Uninstalling the app also removes all of it, because none of it exists anywhere else.
Does Android's own backup include TaskFlow?
The app allows Android's system backup, so a device-to-device transfer may carry your data across. Do not rely on it as your only backup — take a JSON export before changing phones.
Privacy
Nothing is collected, so nothing can leak
What data does TaskFlow collect about me?
None. There is no analytics SDK, no crash reporter, no advertising identifier and no telemetry. The app has no network permission, so it could not send data even if it wanted to.
Why does it ask for notification and alarm permissions?
Notifications show your reminders and the daily summary. Exact-alarm access makes a reminder fire at the minute you chose rather than in a rough window. Both are optional and explained in full on the permissions table.
Do you sell or share my data?
There is no data to sell — it never leaves your device, and there is no company-side database of users.
What about this website?
The site is static pages with no analytics scripts, no advertising and no third-party embeds. If it is served by a hosting provider, that provider will keep standard access logs (IP address, user agent, requested page) as every web server does. The privacy policy spells this out.
How do I exercise my data rights?
Because everything is local, you already have full access, portability and erasure: export gives you a copy, and "Delete all data" or uninstalling removes it. See your data rights.
Troubleshooting
When something does not work
My reminders never arrive
Work through these in order:
- Check the Android notification permission for TaskFlow (Android 13 and newer requires it explicitly).
- Open Settings → Notifications in the app and confirm the master toggle is on.
- Check your quiet hours window — reminders inside it are intentionally held until the window ends.
- Whitelist TaskFlow from battery optimisation, since aggressive power management can delay alarms.
- On Android 12+, tap Open alarm settings in TaskFlow's notification settings and allow exact alarms.
A reminder was set for a time that had already passed
It still fires. Times in the past are nudged a few seconds ahead rather than being discarded, so a reminder created at 09:30 for 09:00 will alert shortly after you set it.
The Pomodoro timer paused when I left the app
It should not — the timer runs in a foreground service with an ongoing notification. If the notification was dismissed or the service was force-stopped by the system, reopen the app and restart the session. Battery-optimisation exemptions help on aggressive OEM builds.
Search finds nothing for an ordinary word
Search matches titles and descriptions, word by word, by prefix. It does not search comments, attachments or the contents of subtasks' own notes beyond the title text. Very short fragments can match a lot — try a longer word.
A screen shows an error instead of my tasks
Task list screens show a short explanation with a Try again button rather than raw exception text. Retrying re-queries the local database. If it persists, exporting your data and reinstalling is the safe route.
Something is unusable with my screen reader or large font size
Please report it — accessibility fixes are treated as bugs, not enhancements. Include your Android version, the screen, and what TalkBack announced. Contact details are below.
Developers
Building and testing from source
What is the project built with?
Kotlin with Jetpack Compose and Material 3, Hilt for dependency injection, Room for the local database (with an FTS4 index for search), DataStore for preferences, WorkManager for scheduled jobs and AlarmManager for reminders. The build targets Android 14 (API 34) with a minimum of Android 8.0 (API 26).
How do I build it?
You need JDK 17 and the Android SDK. From the Android project directory:
- ./gradlew :app:assembleDebug — debug APK
- ./gradlew :app:assembleRelease — release APK (minified, resources shrunk)
- ./gradlew :app:testDebugUnitTest — unit tests
- ./gradlew :app:lintDebug — Android lint, gated by a checked-in baseline
Is there continuous integration?
Yes. A GitHub Actions workflow builds on every push and pull request: it compiles, runs lint, runs the unit tests, assembles a release build and uploads both APKs with the test and lint reports as artifacts. Pushing a version tag additionally publishes the APKs as a release.
Still stuck?
Send a note with your Android version and what you expected to happen. Bug reports and accessibility issues get priority.