When money comes in, My Share tells you exactly what to do next.
My Share is a manual-first, salary and payday planning companion for Android. It is designed around the philosophy of providing immediate financial clarity without requiring invasive bank syncs or complex setup.
- The Hub: A focused, Jetpack Compose-driven interface to allocate and preview upcoming paydays.
- Strategy & Drift: Keep track of financial goals, payday rules, and budget drift before it happens.
- Paywall & Premium Options: Google Play Billing (8.3.0) integration offering deeper review histories and multiple recurring rules.
- Revenue-First Free Ads: AdMob integration fortified by the Google User Messaging Platform (UMP) SDK to respect GDPR/CCPA. Eligible free users see ads after their first salary plan value is delivered: anchored banners on read-only Home/More surfaces, a native sponsored card in More, app-open ads from session 3, capped completed-action interstitials, and opt-in rewarded unlocks. Ads remain disabled for Premium/trial users, onboarding, paywall/purchase flows, salary/allocation input, edit forms, reminder permission flow, active keyboard states, and notification reminder deep links.
- Background Reminders: WorkManager-powered local notifications for payday and weekly check-ins.
- UI/UX: 100% Jetpack Compose using Material 3, optimized for compact devices and low-tier hardware.
- Domain & Data: Clean architecture utilizing Kotlin Coroutines, Flow, and Hilt for dependency injection.
- Billing:
PlayBillingEntitlementRepositoryacts as the single source of truth for free vs. premium states. - Security: Keystore secrets and localized AdMob configurations are cleanly abstracted into Gradle properties outside the repository.
- Clone the repository.
- Add release-only secrets to
~/.gradle/gradle.propertiesor your CI secret store:MYSHARE_RELEASE_STORE_FILE=/path/to/keystore MYSHARE_RELEASE_STORE_PASSWORD=*** MYSHARE_RELEASE_KEY_ALIAS=*** MYSHARE_RELEASE_KEY_PASSWORD=*** MYSHARE_ADMOB_APP_ID=*** MYSHARE_ADMOB_BANNER_AD_UNIT_ID=*** MYSHARE_ADMOB_NATIVE_AD_UNIT_ID=*** MYSHARE_ADMOB_INTERSTITIAL_AD_UNIT_ID=*** MYSHARE_ADMOB_APP_OPEN_AD_UNIT_ID=*** MYSHARE_ADMOB_REWARDED_AD_UNIT_ID=***
- Sync Gradle and run on an Android Emulator or Device (Min SDK optimized for modern Android target).
- Agent and contributor rules live in AGENTS.md.
- For the extensive UI/UX component guidance, explore DESIGN.md.
- Dated files in
docs/ui-ux-qa-notes-*are historical QA evidence. Use them for context, but treatAGENTS.mdandDESIGN.mdas the current source of truth. - For Play Console Data Safety constraints, follow docs/play-data-safety.md.