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.
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.
Supports Android 8 (API 26) 2017+.
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:
- Go to your device settings.
- Search for "Install unknown apps" or similar.
- 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.
- Download the Latest app-release.apk.
- Open the download apk in the app you selected in step #3.
- Choose Install and Accept any Play Protect notifications.
- The app is now installed. Proceed to the Getting Started section below.
The app is ready to use as soon as it is installed β no account, login or setup required.
- Install and open the app.
- Tap the button to create your first list, for example "Groceries".
- Open the list and start typing in the search bar.
- Tap a suggestion to add an item to your list, or press enter to add any custom text.
- Single-tap an item to mark it as done; tap the eye icon to hide or show completed items.
- Swipe an item to the right to reveal Edit and Delete actions.
- 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.
- 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...
If you run into any issues or need help getting started, please do one of the following:
- Report an Issue: https://github.com/cssnr/todolist-android/issues
- Q&A Discussion: https://github.com/cssnr/todolist-android/discussions/categories/q-a
- Request a Feature: https://github.com/cssnr/todolist-android/issues/new
- Chat with us on Discord: https://discord.gg/wXy6m2X8wY
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.
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.
Documentation for building the app in Android Studio and the Command Line.
This section briefly covers running and building in Android Studio and the Command Line.
- Download and Install Android Studio.
https://developer.android.com/studio
-
Ensure that usb or wifi debugging is enabled in the Android developer settings and verify.
-
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
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 compileTo build a debug or release APK:
task debug
task releaseTo check and format non-Kotlin files:
task format
task checkTo install and launch the app on a connected device, ADB is required. Verify your device is detected:
$ adb devices
List of devices attached
RF9M33Z1Q0M deviceThen install and launch:
task playOr use Gradle directly β use gradlew.bat on Windows:
./gradlew assembleDebug
./gradlew assembleReleaseThe release workflow signs the APK and attaches it to GitHub Releases.
See the AGENTS.md file for project conventions and available commands.
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.
You can also star this project on GitHub and support other related projects:
- Django Files Android
- Zipline Android
- NOAA Weather Android
- Remote Wallpaper Android
- Tibs3DPrints Android
For a full list of current projects visit: https://cssnr.github.io/

