Skip to content

Latest commit

Β 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitHub Downloads GitHub Release Version APK Size AGP Version Workflow Lint Workflow Release GitHub Last Commit GitHub Repo Size GitHub Top Language GitHub Contributors GitHub Issues GitHub Discussions GitHub Forks GitHub Repo Stars GitHub Org Stars Discord Ko-fi

Caution

🚨 Free and Open-Source Android is under threat!
Google will turn Android into a locked-down platform, restricting your essential freedom to install apps of your choice. Make your voice heard – Keep Android Open.

TodoList Android

TodoList Android

An offline-first todo list app with a focus on grocery shopping.

Built with Kotlin, Jetpack Compose, Material 3 and Room. All of your lists and items are stored locally on your device β€” no account, no ads, no servers.

Start typing to search a built-in grocery catalog, add items to your lists, and check them off as you shop.

Note

This app is in early release for testing.
Please report any Issues you find.

Install

Get on GitHub Get on Obtainium

Supports Android 8 (API 26) 2017+.

Latest Release Latest Pre-Release

Note: If installing directly, you may need to allow installation of apps from unknown sources.
For more information, see Release through a website.

View Manual Steps to Install from Unknown Sources

Note: Downloading and Installing the apk should take you to the settings area to allow installation if not already enabled. Otherwise:

  1. Go to your device settings.
  2. Search for "Install unknown apps" or similar.
  3. Choose the app you will install the apk file from.
    • Select your web browser to install directly from it.
    • Select your file manager to open it, locate the apk and install from there.
  4. Download the Latest app-release.apk.
  5. Open the download apk in the app you selected in step #3.
  6. Choose Install and Accept any Play Protect notifications.
  7. The app is now installed. Proceed to the Getting Started section below.

Getting Started

The app is ready to use as soon as it is installed β€” no account, login or setup required.

  1. Install and open the app.
  2. Tap the button to create your first list, for example "Groceries".
  3. Open the list and start typing in the search bar.
  4. Tap a suggestion to add an item to your list, or press enter to add any custom text.
  5. Single-tap an item to mark it as done; tap the eye icon to hide or show completed items.
  6. Swipe an item to the right to reveal Edit and Delete actions.

Features

  • Find as you type β€” searching instantly surfaces matching items from the built-in grocery catalog; you can also add any custom item.
  • Single tap to complete β€” tap an item to toggle it done or active, with a neat strike-through.
  • Easily hide/show completed β€” one tap on the eye icon filters out everything you have already picked up.
  • Swipe to edit or delete β€” swipe any item to the right to reveal Edit and Delete actions.
  • Multiple lists β€” create as many lists as you need, such as Groceries, Hardware or Chores.
  • Grouped by category β€” items are automatically grouped under grocery categories like Bakery and Dairy & Eggs.
  • Offline first β€” everything is stored locally with Room; works fully offline, no account or servers.
  • Settings β€” auto-open your last list on launch and toggle search categories.
  • Material 3 UI β€” built with Jetpack Compose; light and dark themes with dynamic Material You colors on Android 12+.
  • Quick launch β€” splash screen and startup routing straight to your last list.

Planned

  • Reorder items within a list.
  • Rename and delete lists.
  • Search across all lists.
  • Quantities and prices for grocery items.
  • Backup and restore.

Note: This list was AI generated...

Request Feature Report Issue

Support

If you run into any issues or need help getting started, please do one of the following:

Features Issues Discussions Discord

Crash Reporting

Without crash reporting, fixing a bug requires you to:

  • Stop what you're doing and open a browser
  • Go to the GitHub repo and create an Issue
  • Explain exactly what you were doing when the app crashed
  • Hope I can re-create the bug myself to get the stack trace

That's a heavy ask for an app that's already broken β€” it leaves you with a bad experience and me without enough data to fix it.

To close that gap without compromising your data or privacy, this app uses ACRA β€” an open-source crash reporting library. Reports are received by a self-hosted Acrarium backend that runs on my own infrastructure, so crash data doesn't go to any third parties β€” no Google or other big-data services.

You can turn crash reporting on or off at any time with a toggle on the Settings page.

What Gets Collected

ACRA only sends reports when the app hits an unhandled crash. By default, it only sends the technical context needed to diagnose the crash:

  • The stack trace of the crash, plus the app and Android versions
  • Basic device context β€” e.g. the device model and OS version
  • A short extract of the app's own logcat (the last ~200 lines)

It does not track usage or activity, collect a device identifier, or send system or other apps' logs. Each report is anonymized and sent directly to my server, so only I receive the data.

Development

Documentation for building the app in Android Studio and the Command Line.

App

This section briefly covers running and building in Android Studio and the Command Line.

Android Studio

  1. Download and Install Android Studio.

https://developer.android.com/studio

  1. Ensure that usb or wifi debugging is enabled in the Android developer settings and verify.

  2. Then build or run the app on your device.

    • Import the Project
    • Run Gradle Sync

To Run: Select a device and press Play ▢️

To Build:

  • Select the Build Variant (debug or release)
  • Build > Generate App Bundles or APK > Generate APKs

Command Line

Note: This section is a WIP! For more details see the release.yaml.

This project uses a Taskfile for common development commands.

To compile Kotlin:

task compile

To build a debug or release APK:

task debug
task release

To check and format non-Kotlin files:

task format
task check

To install and launch the app on a connected device, ADB is required. Verify your device is detected:

$ adb devices
List of devices attached
RF9M33Z1Q0M     device

Then install and launch:

task play

Or use Gradle directly β€” use gradlew.bat on Windows:

./gradlew assembleDebug
./gradlew assembleRelease

The release workflow signs the APK and attaches it to GitHub Releases.

See the AGENTS.md file for project conventions and available commands.

Contributing

If you would like to submit a PR, report a bug or request a feature, please use the GitHub Issues and Discussions pages for this project.

Please consider making a donation to support the development of this project and additional open source projects.

Ko-fi

You can also star this project on GitHub and support other related projects:

For a full list of current projects visit: https://cssnr.github.io/

About

TodoList Android Application

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages