# afteracademy/wimm-android-app architecture

> Architecture diagram of the GitHub repository afteracademy/wimm-android-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/afteracademy/wimm-android-app
- Repository: https://github.com/afteracademy/wimm-android-app

## Overview

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: [`app/src/main/kotlin/com/whereismymotivation/data/repository`](https://github.com/afteracademy/wimm-android-app/tree/main/app/src/main/kotlin/com/whereismymotivation/data/repository) (Repositories), [`app/src/main/kotlin/com/whereismymotivation/ui/navigation/NavGraph.kt`](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/navigation/NavGraph.kt) (Navigation graph), [`app/src/main/kotlin/com/whereismymotivation/fcm/NotificationService.kt`](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/fcm/NotificationService.kt) (Push message service), [`app/src/main/kotlin/com/whereismymotivation/work/worker/MoodAndJournalSyncWorker.kt`](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/work/worker/MoodAndJournalSyncWorker.kt) (Mood journal sync)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["App experience"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_app["Compose app<br/>[WimmApp.kt]"]
  node_navigation["Navigation graph<br/>[NavGraph.kt]"]
  node_auth_ui["Login onboarding<br/>[LoginViewModel.kt]"]
end

subgraph group_content["Discovery and content"]
  node_discovery_ui["Feed search topics<br/>[FeedViewModel.kt]"]
  node_content_ui["Content playback"]
  node_mentor_ui["Mentors"]
  node_box_ui["Motivation box<br/>[MyBoxViewModel.kt]"]
end

subgraph group_wellbeing["Personal tracking"]
  node_wellbeing_ui["Mood journals<br/>[MoodsViewModel.kt]"]
  node_profile_ui["Profile subscriptions"]
end

subgraph group_data["Data services"]
  node_repos["Repositories"]
  node_apis["Backend API clients"]
  node_local_data[("Local database and preferences")]
end

subgraph group_platform["Platform services"]
  node_notification_service["Push message service"]
  node_work_manager["Background work dispatch<br/>[AppWorkManager.kt]"]
  node_sync_worker["Mood journal sync"]
  node_alarm["Daily mood reminder<br/>[AppAlarmManager.kt]"]
  node_analytics["Firebase tracking"]
end

node_user(("App user"))
node_backend{{"WIMM backend"}}
node_firebase{{"Firebase services"}}

node_user -->|"opens and uses"| node_activity
node_activity -->|"hosts"| node_app
node_app -->|"sets up"| node_navigation
node_navigation -->|"routes to"| node_auth_ui
node_navigation -->|"routes to"| node_discovery_ui
node_navigation -->|"routes to"| node_content_ui
node_navigation -->|"routes to"| node_mentor_ui
node_navigation -->|"routes to"| node_box_ui
node_navigation -->|"routes to"| node_wellbeing_ui
node_navigation -->|"routes to"| node_profile_ui
node_auth_ui -->|"requests auth"| node_repos
node_discovery_ui -->|"requests discovery"| node_repos
node_content_ui -->|"requests content"| node_repos
node_mentor_ui -->|"requests mentors"| node_repos
node_box_ui -->|"requests saved content"| node_repos
node_wellbeing_ui -->|"requests records"| node_repos
node_profile_ui -->|"requests profile"| node_repos
node_repos -->|"calls"| node_apis
node_apis -->|"sends requests"| node_backend
node_repos -->|"reads and writes"| node_local_data
node_notification_service -->|"enqueues payload"| node_work_manager
node_work_manager -->|"dispatches sync"| node_sync_worker
node_sync_worker -->|"loads and syncs records"| node_repos
node_sync_worker -->|"tracks sync"| node_analytics
node_notification_service -->|"updates user token"| node_repos
node_notification_service -->|"tracks receipt"| node_analytics
node_alarm -->|"checks reminder setting"| node_local_data
node_analytics -->|"logs events"| node_firebase

click node_activity "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/MainActivity.kt"
click node_app "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/WimmApp.kt"
click node_navigation "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/navigation/NavGraph.kt"
click node_auth_ui "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/login/LoginViewModel.kt"
click node_discovery_ui "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/feed/FeedViewModel.kt"
click node_content_ui "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/content/ContentViewModel.kt"
click node_mentor_ui "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/mentors/ExploreMentorsViewModel.kt"
click node_box_ui "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/mybox/MyBoxViewModel.kt"
click node_wellbeing_ui "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/moods/MoodsViewModel.kt"
click node_profile_ui "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/profile/ProfileViewModel.kt"
click node_repos "https://github.com/afteracademy/wimm-android-app/tree/main/app/src/main/kotlin/com/whereismymotivation/data/repository"
click node_apis "https://github.com/afteracademy/wimm-android-app/tree/main/app/src/main/kotlin/com/whereismymotivation/data/remote/apis"
click node_local_data "https://github.com/afteracademy/wimm-android-app/tree/main/app/src/main/kotlin/com/whereismymotivation/data/local"
click node_notification_service "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/fcm/NotificationService.kt"
click node_work_manager "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/work/AppWorkManager.kt"
click node_sync_worker "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/work/worker/MoodAndJournalSyncWorker.kt"
click node_alarm "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/work/AppAlarmManager.kt"
click node_analytics "https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/analytics/FirebaseTrackingClient.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_activity,node_app,node_navigation,node_auth_ui,node_user toneBlue
class node_discovery_ui,node_content_ui,node_mentor_ui,node_box_ui toneAmber
class node_wellbeing_ui,node_profile_ui toneMint
class node_repos,node_apis,node_local_data toneRose
class node_notification_service,node_work_manager,node_sync_worker,node_alarm,node_analytics,node_backend,node_firebase toneIndigo
```

## Components

### App experience

- [Main activity](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/MainActivity.kt): `app/src/main/kotlin/com/whereismymotivation/ui/MainActivity.kt`
- [Compose app](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/WimmApp.kt): `app/src/main/kotlin/com/whereismymotivation/ui/WimmApp.kt`
- [Navigation graph](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/navigation/NavGraph.kt): `app/src/main/kotlin/com/whereismymotivation/ui/navigation/NavGraph.kt`
- [Login onboarding](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/login/LoginViewModel.kt): `app/src/main/kotlin/com/whereismymotivation/ui/login/LoginViewModel.kt`

### Discovery and content

- [Feed search topics](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/feed/FeedViewModel.kt): `app/src/main/kotlin/com/whereismymotivation/ui/feed/FeedViewModel.kt`
- [Content playback](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/content/ContentViewModel.kt): `app/src/main/kotlin/com/whereismymotivation/ui/content/ContentViewModel.kt`
- [Mentors](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/mentors/ExploreMentorsViewModel.kt): `app/src/main/kotlin/com/whereismymotivation/ui/mentors/ExploreMentorsViewModel.kt`
- [Motivation box](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/mybox/MyBoxViewModel.kt): `app/src/main/kotlin/com/whereismymotivation/ui/mybox/MyBoxViewModel.kt`

### Personal tracking

- [Mood journals](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/moods/MoodsViewModel.kt): `app/src/main/kotlin/com/whereismymotivation/ui/moods/MoodsViewModel.kt`
- [Profile subscriptions](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/ui/profile/ProfileViewModel.kt): `app/src/main/kotlin/com/whereismymotivation/ui/profile/ProfileViewModel.kt`

### Data services

- [Repositories](https://github.com/afteracademy/wimm-android-app/tree/main/app/src/main/kotlin/com/whereismymotivation/data/repository): `app/src/main/kotlin/com/whereismymotivation/data/repository`
- [Backend API clients](https://github.com/afteracademy/wimm-android-app/tree/main/app/src/main/kotlin/com/whereismymotivation/data/remote/apis): `app/src/main/kotlin/com/whereismymotivation/data/remote/apis`
- [Local database and preferences](https://github.com/afteracademy/wimm-android-app/tree/main/app/src/main/kotlin/com/whereismymotivation/data/local): `app/src/main/kotlin/com/whereismymotivation/data/local`

### Platform services

- [Push message service](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/fcm/NotificationService.kt): `app/src/main/kotlin/com/whereismymotivation/fcm/NotificationService.kt`
- [Background work dispatch](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/work/AppWorkManager.kt): `app/src/main/kotlin/com/whereismymotivation/work/AppWorkManager.kt`
- [Mood journal sync](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/work/worker/MoodAndJournalSyncWorker.kt): `app/src/main/kotlin/com/whereismymotivation/work/worker/MoodAndJournalSyncWorker.kt`
- [Daily mood reminder](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/work/AppAlarmManager.kt): `app/src/main/kotlin/com/whereismymotivation/work/AppAlarmManager.kt`
- [Firebase tracking](https://github.com/afteracademy/wimm-android-app/blob/main/app/src/main/kotlin/com/whereismymotivation/analytics/FirebaseTrackingClient.kt): `app/src/main/kotlin/com/whereismymotivation/analytics/FirebaseTrackingClient.kt`

### Other components

- **App user**
- **WIMM backend**
- **Firebase services**

## Connections

- 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
