How projectgammacompany/eduplayandroidapp works
1. Purpose and Runtime
EduPlay is a native Android client for authenticated educational events/quests: users discover, join, play task stages, view results, manage profiles, receive notifications, and download events for offline use. The single Android app module is built with Gradle/Kotlin and launches through app/src/main/AndroidManifest.xml, app/src/main/java/com/eduplay/moblie/EduPlayApp.kt, and app/src/main/java/com/eduplay/moblie/MainActivity.kt.
2. Composition Root and UI Layer
Application-wide providers and managers are assembled near the app entry point, with Hilt-related activity integration. Compose-style screen and element packages form the presentation boundary; screen state and user actions are mediated by dedicated view models rather than directly invoking storage/network code.
• app/src/main/java/com/eduplay/moblie/Providers.kt
• app/src/main/java/com/eduplay/moblie/HiltComponentactivity.kt
• app/src/main/java/com/eduplay/moblie/ui/screens/MainScreen.kt
• app/src/main/java/com/eduplay/moblie/ui/viewmodel/MainScreenViewModel.kt
3. Event and Task Experience
The central control flow is event selection/joining → event screen/stage progression → task-specific rendering and answer submission → results. Stages support parallel blocks and task types including text, single/multiple choice, and QR scanning. Event roles/statuses and task models provide the domain vocabulary.
• app/src/main/java/com/eduplay/moblie/ui/screens/EventScreen.kt
• app/src/main/java/com/eduplay/moblie/ui/screens/EventStageScreen.kt
• app/src/main/java/com/eduplay/moblie/ui/screens/TaskScreen/TaskScreen.kt
• app/src/main/java/com/eduplay/moblie/ui/viewmodel/EventStageViewmodel.kt
• app/src/main/java/com/eduplay/moblie/models/EventStatus.kt
4. Repository Boundary and Remote API
EduRepository/Repository abstract data access for view models and use cases. The web implementation communicates with the EduPlay backend for authentication, event catalogs and details, joining, answers, files, notifications, and profile/event operations. HTTP authentication is a critical boundary: token injection and refresh interception surround API calls.
• app/src/main/java/com/eduplay/moblie/repository/EduRepository.kt
• app/src/main/java/com/eduplay/moblie/repository/webrepository/WebRepository.kt
• app/src/main/java/com/eduplay/moblie/repository/webrepository/WebApi.kt
• app/src/main/java/com/eduplay/moblie/repository/webrepository/AuthInterceptor.kt
• app/src/main/java/com/eduplay/moblie/repository/webrepository/RefreshInterceptor.kt
5. Identity and Session State
Authorization, registration, password recovery, and token lifecycle are separate from general event operations. UI authentication state flows through AuthViewModel; persisted/current credentials are owned by TokenManager, with JWT decoding available for client-side identity claims. Unauthorized backend outcomes map to a dedicated exception.
• app/src/main/java/com/eduplay/moblie/ui/viewmodel/AuthViewModel.kt
• app/src/main/java/com/eduplay/moblie/useCases/managers/TokenManager.kt
• app/src/main/java/com/eduplay/moblie/repository/webrepository/AuthApi.kt
• app/src/main/java/com/eduplay/moblie/exceptions/NotAuthorisedException.kt
6. Offline Event Cache and Download Pipeline
Room-like local persistence stores normalized event graphs—events, blocks, tasks, answers/options, conditions, groups, files, and user status. A download service/use-case pipeline fetches full remote event data and files, materializes it locally, tracks progress, and supports offline mode. Local paging sources support browsing cached event subsets.
• app/src/main/java/com/eduplay/moblie/repository/localrepository/EventDatabase.kt
• app/src/main/java/com/eduplay/moblie/repository/localrepository/LocalRepository.kt
• app/src/main/java/com/eduplay/moblie/useCases/downloadUsecases/EventDownloadService.kt
• app/src/main/java/com/eduplay/moblie/useCases/downloadTaskTypes/FullEventData.kt
• app/src/main/java/com/eduplay/moblie/useCases/managers/OfflineModeManager.kt
7. Device Integrations
Bluetooth supports device discovery and data exchange through a view-model/use-case boundary. QR tasks use a camera preview and analyzer; both require Android runtime permissions and keep platform interaction outside event UI orchestration.
• app/src/main/java/com/eduplay/moblie/ui/viewmodel/BluetoothViewModel.kt
• app/src/main/java/com/eduplay/moblie/useCases/bluetoothInteractions/BluetoothDataExchangeUseCase.kt
• app/src/main/java/com/eduplay/moblie/ui/screens/TaskScreen/QRCameraPreview.kt
• app/src/main/java/com/eduplay/moblie/useCases/QRAnalyser.kt
Main entry points: EduRepository.kt Edu repository · AuthInterceptor.kt Auth HTTP interceptors · EduPlayApp.kt EduPlay application · MainScreen.kt Main screen
Components 25
App & presentation
- Android runtime
app/src/main/AndroidManifest.xml - EduPlay application · Assembles app-wide providers and managers.
app/src/main/java/com/eduplay/moblie/EduPlayApp.kt - Main activity
app/src/main/java/com/eduplay/moblie/MainActivity.kt - Providers
app/src/main/java/com/eduplay/moblie/Providers.kt - Main screen
app/src/main/java/com/eduplay/moblie/ui/screens/MainScreen.kt - Main screen view model
app/src/main/java/com/eduplay/moblie/ui/viewmodel/MainScreenViewModel.kt - Event & stage screens · Selection, joining, stage progression, and results flow.
app/src/main/java/com/eduplay/moblie/ui/screens/EventScreen.kt - Event stage view model
app/src/main/java/com/eduplay/moblie/ui/viewmodel/EventStageViewmodel.kt - Task screen · Renders text, choice, and QR tasks and submits answers.
app/src/main/java/com/eduplay/moblie/ui/screens/TaskScreen/TaskScreen.kt
Data & session
- Auth view model
app/src/main/java/com/eduplay/moblie/ui/viewmodel/AuthViewModel.kt - Edu repository · Boundary used by view models and use cases.
app/src/main/java/com/eduplay/moblie/repository/EduRepository.kt - Web repository
app/src/main/java/com/eduplay/moblie/repository/webrepository/WebRepository.kt - Auth API
app/src/main/java/com/eduplay/moblie/repository/webrepository/AuthApi.kt - EduPlay web API · Events, joining, answers, files, notifications, and profile operations.
app/src/main/java/com/eduplay/moblie/repository/webrepository/WebApi.kt - Auth HTTP interceptors · Injects tokens and refreshes expired sessions.
app/src/main/java/com/eduplay/moblie/repository/webrepository/AuthInterceptor.kt - Token manager · Owns persisted and current credentials.
app/src/main/java/com/eduplay/moblie/useCases/managers/TokenManager.kt
Offline pipeline
- Event download service · Fetches complete event data and files while tracking progress.
app/src/main/java/com/eduplay/moblie/useCases/downloadUsecases/EventDownloadService.kt - Local repository · Serves cached event subsets and local data.
app/src/main/java/com/eduplay/moblie/repository/localrepository/LocalRepository.kt - Event database · Normalized offline event graph and user status.
app/src/main/java/com/eduplay/moblie/repository/localrepository/EventDatabase.kt - Offline mode manager
app/src/main/java/com/eduplay/moblie/useCases/managers/OfflineModeManager.kt
Device integrations
- Bluetooth view model
app/src/main/java/com/eduplay/moblie/ui/viewmodel/BluetoothViewModel.kt - Bluetooth exchange · Discovers devices and exchanges data.
app/src/main/java/com/eduplay/moblie/useCases/bluetoothInteractions/BluetoothDataExchangeUseCase.kt - QR camera preview
app/src/main/java/com/eduplay/moblie/ui/screens/TaskScreen/QRCameraPreview.kt - QR analyser
app/src/main/java/com/eduplay/moblie/useCases/QRAnalyser.kt
Other components
- EduPlay backend
Connections 28
- Android runtime → EduPlay application: launches
- EduPlay application → Main activity: hosts
- EduPlay application → Providers: assembles
- Main activity → Main screen: renders
- Providers → Main screen view model: provides
- Main screen → Main screen view model: state and actions
- Main screen → Event & stage screens: navigates to
- Event & stage screens → Event stage view model: state and actions
- Event & stage screens → Task screen: renders stage tasks
- Task screen → Event stage view model: submits answers
- Main screen view model → Edu repository: loads events
- Event stage view model → Edu repository: event operations
- Auth view model → Auth API: authenticates
- Auth view model → Token manager: updates session
- Edu repository → Web repository: remote data
- Edu repository → Local repository: offline data
- Web repository → EduPlay web API: calls
- Auth API → Auth HTTP interceptors: authenticated HTTP
- EduPlay web API → Auth HTTP interceptors: authenticated HTTP
- Auth HTTP interceptors → Token manager: reads and refreshes tokens
- Auth HTTP interceptors → EduPlay backend: requests
- Event download service → Web repository: fetches full event
- Event download service → Local repository: materializes cache
- Local repository → Event database: persists
- Offline mode manager → Edu repository: selects source
- Bluetooth view model → Bluetooth exchange: device actions
- Task screen → QR camera preview: QR task camera
- QR camera preview → QR analyser: camera frames