How afteracademy/wimm-android-app works
WhereIsMyMotivation is an Android app for discovering inspirational content and mentors, following topics, and recording moods and journals. Its principal workflow runs from Compose navigation and feature screens through MVVM view models and repositories to backend APIs or local persistence. Separate branches support authentication and search, notifications and background sync, and Firebase analytics. The README documents the broader capabilities and MVVM design; sampled source confirms notification dispatch, mood/journal sync, and selected repository/API behavior, but not every feature’s wiring.
Main entry points: repository Repositories · NavGraph.kt Navigation graph · NotificationService.kt Push message service · MoodAndJournalSyncWorker.kt Mood journal sync
Components 21
App experience
- Main activity
app/src/main/kotlin/com/whereismymotivation/ui/MainActivity.kt - Compose app
app/src/main/kotlin/com/whereismymotivation/ui/WimmApp.kt - Navigation graph
app/src/main/kotlin/com/whereismymotivation/ui/navigation/NavGraph.kt - Login onboarding
app/src/main/kotlin/com/whereismymotivation/ui/login/LoginViewModel.kt
Discovery and content
- Feed search topics
app/src/main/kotlin/com/whereismymotivation/ui/feed/FeedViewModel.kt - Content playback
app/src/main/kotlin/com/whereismymotivation/ui/content/ContentViewModel.kt - Mentors
app/src/main/kotlin/com/whereismymotivation/ui/mentors/ExploreMentorsViewModel.kt - Motivation box
app/src/main/kotlin/com/whereismymotivation/ui/mybox/MyBoxViewModel.kt
Personal tracking
- Mood journals
app/src/main/kotlin/com/whereismymotivation/ui/moods/MoodsViewModel.kt - Profile subscriptions
app/src/main/kotlin/com/whereismymotivation/ui/profile/ProfileViewModel.kt
Data services
- Repositories
app/src/main/kotlin/com/whereismymotivation/data/repository - Backend API clients
app/src/main/kotlin/com/whereismymotivation/data/remote/apis - Local database and preferences
app/src/main/kotlin/com/whereismymotivation/data/local
Platform services
- Push message service
app/src/main/kotlin/com/whereismymotivation/fcm/NotificationService.kt - Background work dispatch
app/src/main/kotlin/com/whereismymotivation/work/AppWorkManager.kt - Mood journal sync
app/src/main/kotlin/com/whereismymotivation/work/worker/MoodAndJournalSyncWorker.kt - Daily mood reminder
app/src/main/kotlin/com/whereismymotivation/work/AppAlarmManager.kt - Firebase tracking
app/src/main/kotlin/com/whereismymotivation/analytics/FirebaseTrackingClient.kt
Other components
- App user
- WIMM backend
- Firebase services
Connections 28
- App user → Main activity: opens and uses
- Main activity → Compose app: hosts
- Compose app → Navigation graph: sets up
- Navigation graph → Login onboarding: routes to
- Navigation graph → Feed search topics: routes to
- Navigation graph → Content playback: routes to
- Navigation graph → Mentors: routes to
- Navigation graph → Motivation box: routes to
- Navigation graph → Mood journals: routes to
- Navigation graph → Profile subscriptions: routes to
- Login onboarding → Repositories: requests auth
- Feed search topics → Repositories: requests discovery
- Content playback → Repositories: requests content
- Mentors → Repositories: requests mentors
- Motivation box → Repositories: requests saved content
- Mood journals → Repositories: requests records
- Profile subscriptions → Repositories: requests profile
- Repositories → Backend API clients: calls
- Backend API clients → WIMM backend: sends requests
- Repositories → Local database and preferences: reads and writes
- Push message service → Background work dispatch: enqueues payload
- Background work dispatch → Mood journal sync: dispatches sync
- Mood journal sync → Repositories: loads and syncs records
- Mood journal sync → Firebase tracking: tracks sync
- Push message service → Repositories: updates user token
- Push message service → Firebase tracking: tracks receipt
- Daily mood reminder → Local database and preferences: checks reminder setting
- Firebase tracking → Firebase services: logs events