A private, local-first mood journal for Android and iOS.
Waymark helps you record how you feel, add context, notice patterns, and keep the resulting journal under your control. It requires no account and stores journal data on your device.
- Quick mood logging with multiple check-ins per day
- Guided journal entries with notes, prompts, activities, sliders, and photos
- Searchable journal history with important-entry filtering
- Weekly goals, activity-linked progress, and streak tracking
- Mood trends, activity insights, calendar views, and achievements
- Optional reminders, health context, and coarse-location weather
- Light and dark themes with customizable journal options
- Secure PIN lock backed by platform-protected storage
- JSON and photo-archive backups, restore support, and Daylio CSV import
Waymark is local-first:
- Journal content is stored in an on-device SQLite database.
- No account, analytics, advertising, or telemetry is required.
- Health data is requested only when you enable health context.
- Weather is optional and is the only feature that sends a network request; it uses coarse location with Open-Meteo.
- PIN data is stored through Android Keystore or the iOS Keychain.
Back up your journal regularly. Local-first storage means deleting the app or losing the device can remove data that has not been exported.
Download the signed APK from the latest GitHub release. Android may ask you to allow installation from your browser or file manager.
Waymark supports Android 8.0 (API 26) and newer.
Prebuilt iOS packages are not currently published. Build from source with Xcode and your own Apple signing configuration.
- Flutter 3.44.6 or newer
- Dart 3.12 or newer
- Java 17 and the Android SDK for Android builds
- Xcode and CocoaPods for iOS builds
git clone https://github.com/rigerc/waymark-flutter.git
cd waymark-flutter
flutter pub get
flutter rundart format --output=none --set-exit-if-changed lib test
flutter analyze
flutter test
flutter build apk --debugGitHub Actions runs the same checks and uploads coverage plus a debug APK for each workflow run.
Android release builds require credentials supplied outside Git:
export ANDROID_KEYSTORE_BASE64="$(base64 < /path/to/release.jks | tr -d '\n')"
export ANDROID_KEY_ALIAS='waymark'
export ANDROID_KEY_PASSWORD='your-key-password'
export ANDROID_STORE_PASSWORD='your-store-password'
./scripts/build_android_release.shThe script creates a signed Android App Bundle and removes temporary signing files when it exits. See docs/release.md for signing details and the device smoke-test checklist.
lib/app/ Application setup and dependencies
lib/data/ Database, repositories, backups, and platform services
lib/domain/ Journal domain models
lib/ui/ Themes, reusable widgets, screens, and view models
test/ Data-layer and widget tests
Issues and focused pull requests are welcome. Before submitting a change, run the checks above and describe the user-visible behavior being changed.