How mikhail0vvlad/powerlifting-assistant-android works
Powerlifting Assistant is an Android training and nutrition client. Users enter through Firebase-backed authentication, then navigate to training programs, recovery, workout logging/history, nutrition and food search, profile, achievements, and utility screens; ViewModels and domain use cases coordinate repository operations, with REST-backed data cached locally. The README documents the broader screen set and MVVM/Clean Architecture; sampled repository code confirms API, token, and cache ownership for program, nutrition, and workout operations. Some unsampled screen-to-use-case wiring is therefore shown only at subsystem level.
Main entry points: viewmodel ViewModels · repo Repository implementations · RootNav.kt Auth navigation · MainActivity.kt App entry
Components 19
Presentation
- Auth navigation
app/src/main/java/com/powerlifting/assistant/presentation/navigation/RootNav.kt - Compose screens
app/src/main/java/com/powerlifting/assistant/presentation/screens - ViewModels
app/src/main/java/com/powerlifting/assistant/presentation/viewmodel - App entry
app/src/main/java/com/powerlifting/assistant/MainActivity.kt
Domain
- Use cases
app/src/main/java/com/powerlifting/assistant/domain/usecase - Domain models
app/src/main/java/com/powerlifting/assistant/domain/model - Repository contracts
app/src/main/java/com/powerlifting/assistant/domain/repository - Food search
app/src/main/java/com/powerlifting/assistant/data/repo/FoodRepositoryImpl.kt
Data access
- Repository implementations
app/src/main/java/com/powerlifting/assistant/data/repo - REST API client
app/src/main/java/com/powerlifting/assistant/data/api/PowerliftingApi.kt - Memory cache
app/src/main/java/com/powerlifting/assistant/data/cache/AppCache.kt - Firebase token provider
app/src/main/java/com/powerlifting/assistant/data/auth/FirebaseTokenProvider.kt
Local services
- App preferences
app/src/main/java/com/powerlifting/assistant/data/local/AppPreferences.kt - Reminder worker
app/src/main/java/com/powerlifting/assistant/notifications/ReminderWorker.kt - Notification utility
app/src/main/java/com/powerlifting/assistant/notifications/NotificationUtils.kt
External services
- Powerlifting REST server
- Firebase Authentication
- WorkManager
Other components
- Athlete
Connections 18
- Athlete → Auth navigation: opens app
- Auth navigation → Compose screens: routes
- Compose screens → ViewModels: dispatches actions
- ViewModels → Use cases: invokes
- Use cases → Repository contracts: requests operations
- Repository contracts → Repository implementations: implemented by
- Repository implementations → REST API client: makes requests
- Repository implementations → Firebase token provider: gets bearer token
- Firebase token provider → Firebase Authentication: gets ID token
- REST API client → Powerlifting REST server: sends REST requests
- Repository implementations → Memory cache: reads and invalidates
- ViewModels → Food search: searches products
- Food search → App preferences: stores selection history
- App entry → Auth navigation: hosts navigation
- App entry → WorkManager: schedules reminders
- WorkManager → Reminder worker: runs worker
- Reminder worker → Notification utility: shows reminder
- ViewModels → Domain models: presents domain data