Reminder is a local-first Android app for scheduled reminders and checklists. The current implementation stores reminder data, categories, subtasks, attachments and preferences locally in Room and DataStore, and it continues to work without a remote server or account.
Reminder currently focuses on four core responsibilities:
- local reminder creation and editing with scheduling, priority, subtasks, notes, categories, and photo attachments;
- exact or inexact local alarm scheduling with Android
AlarmManagerand local notification delivery; - local backup/restore of reminders and related preferences in a portable
.reminderbackuparchive; - local settings, theming, retention, diagnostics, and home-screen widgets.
This is not a cloud-synced or multi-user application. The app can be built in two distribution variants:
offline: local-only distribution with no network permissions in the manifest;online: same local reminder engine, with optional public GitHub release checks enabled.
The project is intentionally split into an offline flavor and an online flavor, but the real online implementation does not add remote reminder synchronization. Today, online is a local app with extra GitHub update-check logic, not a sync platform.
- reminders with title, notes, due date/time, category, priority, subtasks, and attachments;
- local soft-delete + restore flow with a 90-day retention window and trash purge;
- recurrence semantics through the reminder model and scheduling logic already present in the app;
- three reminder alert levels: Light heads-up notification, Medium full-screen alert, and Strong full-screen alarm with looping sound; Android permissions control full-screen display over other apps;
- local alarm scheduling and reboot rescheduling;
- local backups with validate-and-restore logic;
- a resizable Today reminders widget with per-widget transparency and a fixed quick-add widget.
- Material 3 theme modes: System, Light, Dark, and AMOLED;
- per-app language support for English, French, Italian, German, Spanish, Japanese, Simplified Chinese, and Arabic;
- debug diagnostics limited to debug builds.
The project is a single Gradle module named :app, structured into packages rather than separate Android modules. The main layers are:
presentation: Compose UI and ViewModels;domain: models, repository contracts, and use cases;data: Room database, DAOs, repositories, backups, and workers;core: alarms, notifications, preferences, debug tools, distribution features, and design system.
The app relies on Room, DataStore, WorkManager, Compose, and Android standard platform APIs.
- Kotlin + Jetpack Compose
- Room + KSP
- DataStore Preferences
- WorkManager
- Material 3
- Android
AlarmManager, notifications, and foreground services
- Android 8.0+ (API 26)
- JDK 21
- Android SDK Platform 36
- Gradle via the repository wrapper
./gradlew testOfflineDebugUnitTest testOnlineDebugUnitTest
./gradlew assembleOfflineDebug assembleOnlineDebugFor release builds, the project reads signing information from environment variables when present, and gradle.properties provides the current appVersionCode and appVersionName.
This repository contains the product documentation in the docs/ directory.
- docs/ARCHITECTURE.md — architecture, data flow, and package responsibilities
- docs/BUILD.md — build prerequisites, flavors, commands, and packaging details
- docs/DEVELOPMENT.md — working guide for contributors
- docs/DEBUGGING.md — debug logging and diagnostic workflow
- docs/NOTIFICATIONS.md — notification channels and Android constraints
- docs/ALARMS.md — scheduling, alarms, receivers, snooze, and boot recovery
- docs/DATABASE.md — Room schema and persistence model
- docs/BACKUP_RESTORE.md — backup format, validation, and restore behavior
- docs/OFFLINE_ONLINE.md — exact current state of both flavors
- docs/UI.md — interface and navigation overview
- docs/THEMING.md — theme system and appearance rules
- docs/SECURITY.md — existing security posture and future recommendations
- docs/ROADMAP.md — factual roadmap and future intent
- docs/ANDROID_BEHAVIOR.md — Android platform constraints affecting reminders
- docs/API.md — internal domain and persistence contracts
- docs/CHANGELOG.md — project changelog
Additional project docs:
Reminder is licensed under the GNU General Public License v3.0. See LICENSE.
This repository is in active development and documentation is aligned to the implemented codebase, not to future plans. The project is locally centric and intentionally avoids remote synchronization until it is explicitly designed and implemented.