A minimal, multilingual Android app for recording daily emotions with emoji-based expression and percentage scoring. Built for global users with English as the default language and Korean support. Designed for the ChatGPT App Store (Mind & Meditation category).
R:Note is an emotion journaling app that removes decision fatigue from the recording process. Users pick an emoji, adjust a mood percentage, and optionally write a short note. All data is stored locally on the device with no account required.
The internal data model includes fields like sentimentHint, emotionScore, and wordCount that are invisible to the user but structured for AI-powered analysis, weekly/monthly reports, and ChatGPT API integration in future versions.
Splash → Onboarding (4 pages) → Permission Sheet → Note Editor → Note List
Emotion Recording (v0.2.1)
- 11-level emotion scale (0–100%) with emoji + localized label
- Dual-button selector: tap emoji or label to expand all 11 options
- Structured sentiment mapping (negative / neutral / positive)
- Title + body note editor
Note Management
- Note list grouped by date (locale-aware formatting)
- Search records by title, body, emotion label, and date
- Sort records by latest, oldest, best mood, and lowest mood
- Edit mode with multi-select deletion and select all
- Floating action button for quick entry
- Tap to edit existing notes
- Double back press to exit app
ChatGPT Export & Analysis (v0.2)
- Share notes to ChatGPT app with auto-generated analysis prompts
- 3 prompt types: Emotion Pattern Analysis, Weekly/Monthly Report, Counseling
- Export all notes or selected notes only
- Export filtered search results for more focused ChatGPT analysis
- Guardrails for long exports: up to 40 records or 60,000 characters per ChatGPT share
- Localized prompts (English default optimized for ChatGPT response quality)
Internationalization (i18n) (v0.3.0)
- English default + Korean support (~70 localized strings)
- Device language auto-detection (no manual toggle needed)
- Locale-aware date formatting (EN: "Feb 12, 2026" / KO: "2026. 2. 12.")
- Emotion labels: English key stored in DB for export compatibility, localized display in UI
- Extensible structure for adding Japanese, Spanish, and more
Data Safety
- Auto-save draft on app background/exit
- "Discard changes?" confirmation on back press
- All data stored locally via Room database
Monetization (v1.0.0)
- Google AdMob bottom banner (320×50) on note list screen
- Non-intrusive placement: no ads during note writing/editing
- Free app model with no ad removal plan
Design (v0.2.2)
- Cloud Dancer (#F0EDE5) background + Charcoal (#2F2F2F) primary
- Hahmlet custom font (Latin + Korean support)
- Custom icons (OpenAI, pen, edit) + app logo
- Android 12+ splash screen handling
Onboarding & Permissions
- 4-page horizontal pager onboarding
- Storage permission bottom sheet (skippable)
- Onboarding shown only on first launch
Update Flow (v1.2.0)
- Google Play in-app update check on app launch
- Update prompt shown only when a newer Play Store version is available
| Layer | Technology |
|---|---|
| Language | Kotlin 2.2.10 |
| UI | Jetpack Compose (BOM 2026.01.01) |
| Architecture | MVVM (ViewModel + StateFlow) |
| Navigation | Navigation Compose |
| Database | Room + KSP |
| Preferences | DataStore |
| Ads | Google AdMob (play-services-ads 24.3.0) |
| Serialization | Gson |
| Build | Gradle 8.13, AGP 9.0, Version Catalog |
| Min SDK | 26 (Android 8.0) |
| Target SDK | 35 (Android 15) |
app/src/main/java/com/rnote/app/
├── RNoteApplication.kt
├── MainActivity.kt
├── data/
│ ├── local/
│ │ ├── NoteEntity.kt # Room entity (ChatGPT-ready schema)
│ │ ├── NoteDao.kt # CRUD + draft queries
│ │ └── RNoteDatabase.kt
│ └── repository/
│ └── NoteRepository.kt
├── export/
│ ├── ExportModels.kt # Export data models + @StringRes prompts
│ └── ExportHelper.kt # JSON/text export + Share Intent
├── navigation/
│ └── NavGraph.kt
└── ui/
├── theme/ # Color, Type (AppFont), Theme
├── splash/SplashScreen.kt
├── onboarding/OnboardingScreen.kt
├── components/
│ ├── PermissionBottomSheet.kt
│ ├── BannerAd.kt # AdMob banner composable
│ └── RNoteButton.kt # Shared button component
├── note/ # Editor screen + ViewModel
└── notelist/ # List screen + ViewModel
app/src/main/res/
├── values/strings.xml # English default (~70 strings)
├── values-ko/strings.xml # Korean translations
├── font/hahmlet.ttf
├── drawable/ # Logo, icons, splash
└── values-v31/themes.xml # Android 12+ splash config
Requirements
- Android Studio Ladybug (2024.2) or later
- JDK 17
- Android SDK 35
Steps
git clone https://github.com/creativeflow-labs/r-note-app.git- Open the project in Android Studio
- Wait for Gradle sync to complete
- Run on an emulator or connected device (min API 26)
This project follows Semantic Versioning.
Tag:
v1.2.2| Date: 2026.07.25
- Updated Android target and compile SDK from
35to36for Google Play Android 16 policy compliance - Reduced Android Gradle Plugin compatibility flags where safe while retaining settings required by the current AGP/Kotlin combination
- Bumped Android release metadata for Google Play upload (
versionCode 7,versionName 1.2.2) - Synced export payload version string to
1.2.2 - No user-facing feature changes in this maintenance release
Tag:
v1.2.1| Date: 2026.06.08
- Updated AndroidX Fragment from transitive
1.1.0to1.8.9for Google Play SDK warning resolution - Bumped Android release metadata for Google Play upload (
versionCode 6,versionName 1.2.1) - Synced export payload version string to
1.2.1 - No user-facing feature changes in this maintenance release
Tag:
v1.2.0| Date: 2026.05.29
- Added record search with a top-bar search icon and focused search mode
- Added sort options for latest, oldest, best mood, and lowest mood
- Enabled ChatGPT export from filtered search results
- Added export guardrails for large ChatGPT shares (
40records /60,000characters) - Added Google Play in-app update check and update prompt
- Improved edit/save stability by preserving existing note creation time
- Bumped Android release metadata for Google Play upload (
versionCode 5,versionName 1.2.0)
Tag:
v1.1.0| Date: 2026.03.14
- Added a dedicated user guide icon next to the ChatGPT icon in the note list top bar
- Linked the new guide entry point to the hosted Notion user guide
- Added a custom journal-style icon asset for the guide action
- Bumped Android release metadata for the next Google Play upload (
versionCode 4,versionName 1.1.0)
Tag:
v1.0.0| Date: 2026.02.17
- Google AdMob bottom banner (320×50) on note list screen only
- MobileAds SDK initialization in Application class
- BannerAd composable with edge-to-edge navigation bar support
- Ad unit IDs managed in strings.xml (translatable=false)
- Free app model, no ad removal option
Tag:
v0.3.0| Date: 2026.02.12
- English default + Korean support (~70 localized strings)
- All UI strings externalized to
stringResource()/context.getString() - PromptType enum refactored to
@StringResresource IDs - EmotionLevel dual-label:
labelKey(DB/export) +labelRes(UI display) - Locale-aware date formatting via
DateFormat.MEDIUM - AppFont variable for future locale-specific font support
Tag:
v0.2.2| Date: 2026.02.12
- Charcoal (#2F2F2F) primary color system
- Hahmlet custom font for title and body text
- Custom vector icons (OpenAI, pen, edit)
- App logo with adaptive icon (safe zone applied)
- RNoteButton shared component
- Streamlined export UX (direct OpenAI icon, no dropdown)
- Android 12+ system splash screen handling
Tag:
v0.2.1| Date: 2026.02.12
- 11-level emotion scale (0–100%) replacing 4-emoji system
- Dual-button emotion selector with expandable grid
- Select all / deselect all in edit mode
- Status bar overlap fix (statusBarsPadding)
- Double back press to exit app
Tag:
v0.2.0| Date: 2026.02.12
- ChatGPT analysis sharing with 3 prompt types (Emotion Analysis, Weekly Report, Counseling)
- JSON file export with emotion_timeline and summary statistics
- Export all notes or selected notes via edit mode
- Prompt selector bottom sheet UI
- FileProvider-based secure file sharing
Tag:
v0.1.0| Date: 2026.02.08
First working version with core emotion recording functionality:
- Splash screen with fade-in animation
- 4-page onboarding with permission request
- Emotion input: emoji selection, percentage control, one-line label
- Note editor with title and body
- Note list with date grouping and edit mode (multi-delete)
- Draft auto-save on background/exit
- Room database with ChatGPT-ready data schema
- Cloud Dancer (#F0EDE5) design theme
See CHANGELOG.md for detailed version history.
| Branch | Purpose |
|---|---|
main |
Release-ready code only |
develop |
Integration branch for next version |
feature/* |
New features |
fix/* |
Bug fixes |
This project is licensed under the Apache License 2.0 — see the LICENSE file for details.
Copyright 2026 CrabAI
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0