Personal AI-powered notes, diary and calendar for Android — local-first, with a custom paper-and-ink design system and your own OpenRouter key for the AI bits.
Notesapp is a single-user Android app I built for myself: notes, a diary and a calendar in one place, with optional AI clean-up and reminder extraction through OpenRouter, voice-to-text capture, and a hand-tuned "Aura" design system instead of stock Material widgets. It's distributed as a sideloaded APK, not through the Play Store.
Notes
- Live-markdown editor (headings, bold/italic, checklists, smart lists) with a keyboard-docked formatting toolbar
- Undo/redo, draft crash-recovery
- Full-text search with highlights
- Tags & folders (colors, merge), pin/archive
- 30-day trash with undo everywhere
AI (bring your own OpenRouter key)
- Clean-up: streams a de-filler'd, structured rewrite of any ramble into a before/after sheet
- Extract actions: pulls events/reminders/todos out of note text as confirm/deny cards with edit + free-text revision
- Offline queueing, per-call cost tracking, model picker (default
deepseek/deepseek-v4-flash)
Voice
- Record voice rambles (auto-split 5-minute AAC segments)
- Transcribe via OpenRouter STT (default
qwen/qwen3-asr-flash-2026-02-10) - Transcript lands in the note with a circular audio chip and popover player
- Optional auto clean-up on the transcript
Calendar & reminders
- Custom springy month/week/agenda views
- Exact alarms that survive reboots, with Done/Snooze notification actions
- Natural-language quick-add ("gym tomorrow 7am") parsed locally
- Battery-killer warnings for reliable delivery
Diary
- Day-per-entry with mood, streaks and a heat-map
- "On this day", rotating prompts
- Optional biometric gate, daily nudge
Design & themes
- Light / Dark / Pure Black (AMOLED) / Grey, each with 8 accents
- Circular-reveal theme switching, spring physics throughout, haptics vocabulary
- Editorial typography (Fraunces + Hanken Grotesk), warm paper-layer depth system
- Press feedback on every control, reduce-motion support, 120 Hz-friendly
Capture fast
- Quick-settings tile, app-icon shortcuts, share/selected-text into a note
- Bottom-right contextual FAB with an anchored capture panel
Privacy
- Everything stored on-device; the only network traffic is your own OpenRouter calls
- Checksummed ZIP backup/restore (manual + scheduled)
- API key kept in Android Keystore, never written to backups or logs
| Notes | Capture panel | Diary |
|---|---|---|
![]() |
![]() |
![]() |
| Calendar | Settings |
|---|---|
![]() |
![]() |
- Download the latest
app-release.apkfrom Releases. - Open it on your phone; allow "install unknown apps" for your browser/files app when prompted.
- Android may show a Play Protect warning — this is normal for sideloaded apps not distributed through the Play Store; choose "Install anyway".
- Open Settings → AI in the app and paste your own OpenRouter API key. The app doesn't work without one — there's no bundled key or backend.
Requires JDK 17 and Android SDK 36.
./gradlew assembleDebug
./gradlew testDebugUnitTest
Release builds are signed using a keystore.properties file kept outside the repo. Point Gradle at it with the NOTESAPP_KEYSTORE_PROPS environment variable (see app/build.gradle.kts); CI builds are unsigned by design.
Kotlin 2.1 · Jetpack Compose (custom design system, no Material widgets) · Room + FTS4 · Hilt · Ktor · WorkManager · minSdk 31 / targetSdk 36
See CHANGELOG.md for release notes. Spec and roadmap live in PLAN.md.




