A polished, fully functional, offline-first native Android note-taking application built with Kotlin, Jetpack Compose, and Material 3 design principles.
-
Create, Edit & Delete Notes
- Full note creation, rich text body, and checklist support.
- Deletion moves notes to Trash with immediate Undo Snackbar.
- Automatic modification timestamp tracking.
-
Automatic Saving
- Debounced background saving while typing (no manual Save button required).
- Real-time save status indicator (
Saving…/Saved).
-
Rich Text Formatting
- Bold, Italic, Underline, and Strikethrough.
- Highlight markers with custom pastel highlights.
- Text color customization.
- Bullet lists and numbered lists.
- Structured JSON preservation of spans in Room database.
-
Folders & Tags
- Create, rename, and delete folders with pastel accent colors.
- Assign and move notes between folders with folder chip indicators.
- Multi-tag management with quick filtering.
-
Fast Offline Search
- Instant search across note titles and content.
- Support for English and Bengali script.
- Instant clear and filter tabs (All, Pinned, Favorites).
-
Pin & Favorites
- Pinned notes dedicated section at the top of the Home feed.
- Favorite indicator and quick filter.
-
Light & Dark Themes
- Faithful implementation of the MyNotes UI/UX Blueprint.
- Light theme (
#F8F7F3), dark charcoal theme (#141419), and System Default. - Persistent theme selection via DataStore Preferences.
-
Checklists & To-Do Notes
- Dedicated checklist mode with interactive checkboxes.
- Add, edit, reorder, and delete checklist items.
- Strikethrough and muted formatting for completed tasks.
-
100% Offline Storage
- Built on Room Database with SQLite.
- Zero login required; fully private and offline.
-
Backup & Restore
- JSON backup export via Android Storage Access Framework (SAF).
- Backup restoration with validation and conflict resolution (Merge vs Replace).
This repository includes an automated GitHub Actions CI/CD workflow (.github/workflows/android.yml):
-
Automatic Triggers:
- On every
git pushorpull_requesttomain/master. - On manual trigger via the Actions tab in GitHub (Run workflow button).
- On every
-
What the Workflow Does:
- Sets up OpenJDK 17 with Gradle dependency caching.
- Automatically decodes
debug.keystorefromdebug.keystore.base64so no keystore signing errors occur on GitHub runners. - Executes unit & integration tests (
testDebugUnitTest). - Builds the debug APK (
./gradlew assembleDebug). - Automatically uploads the compiled APK (
MyNotes-v1.0-debug) as a downloadable build artifact in the GitHub Actions run summary.
-
To Download the APK from GitHub:
- Go to your repository on GitHub.
- Click on the Actions tab.
- Click on the latest workflow run.
- Scroll down to the Artifacts section and click MyNotes-v1.0-debug to download the APK.