How chofeechen/dartvio-app works
DartVio is a cross-platform darts scoring and training app. The primary workflow is choosing a match, playing a local or AI-assisted game, recording its result, and reviewing stats or achievements. Separate branches cover solo practice, impact-analysis training, and online rooms. The README establishes the shared Kotlin Multiplatform core; sampled excerpts confirm practice rules, adaptive AI, local persistence, achievement calculation, and online event handling. Other unsampled feature wiring is represented conservatively from the source tree.
Main entry points: DartVioNavHost.kt Navigation · GameViewModel.kt Match play · PracticeModeScreen.kt Practice modes · OnlineRoomRepository.kt Room repository
Components 19
App experience
- Android entry
android/app/src/main/java/com/dartvio/app/MainActivity.kt - Navigation
android/app/src/main/java/com/dartvio/app/ui/navigation/DartVioNavHost.kt
Match play
- Match setup
android/app/src/main/java/com/dartvio/app/ui/setup/MatchSetupScreen.kt - Match play
android/app/src/main/java/com/dartvio/app/ui/game/GameViewModel.kt - Game rules
android/shared/src/commonMain/kotlin/com/dartvio/app/domain/rules
Practice and analysis
- Practice modes
android/app/src/main/java/com/dartvio/app/ui/practice/PracticeModeScreen.kt - Practice engines
android/shared/src/commonMain/kotlin/com/dartvio/app/domain/practice - Impact training
android/app/src/main/java/com/dartvio/app/ui/practice/ImpactPracticeViewModel.kt
Online rooms
- Room lobby
android/app/src/main/java/com/dartvio/app/ui/lobby/LobbyViewModel.kt - Room repository
android/app/src/main/java/com/dartvio/app/data/room/OnlineRoomRepository.kt - Online API
android/app/src/main/java/com/dartvio/app/net/online/OnlineRoomApi.kt - Room service
Persistence and insights
- Match history
android/app/src/main/java/com/dartvio/app/data/local/RoomMatchRecorder.kt - Stats analysis
android/app/src/main/java/com/dartvio/app/ui/stats/StatsViewModel.kt - Stats calculation
android/app/src/main/java/com/dartvio/app/domain/stats/StatsCalculator.kt - Impact records
android/app/src/main/java/com/dartvio/app/data/ImpactRepository.kt - Achievements
android/app/src/main/java/com/dartvio/app/data/achievement/AchievementRepository.kt - Achievement rules
android/app/src/main/java/com/dartvio/app/domain/achievement/AchievementCalculator.kt
Other components
- Player
Connections 21
- Player → Android entry: opens app
- Android entry → Navigation: starts navigation
- Player → Navigation: chooses feature
- Navigation → Match setup: opens setup
- Match setup → Match play: starts match
- Match play → Game rules: applies rules
- Match play → Match history: records result
- Navigation → Stats analysis: opens stats
- Stats analysis → Match history: reads history
- Stats analysis → Stats calculation: calculates metrics
- Navigation → Practice modes: opens practice
- Practice modes → Practice engines: runs exercises
- Practice modes → Impact training: starts impact drill
- Impact training → Impact records: stores dart data
- Navigation → Achievements: loads achievements
- Achievements → Match history: reads match facts
- Achievements → Achievement rules: calculates unlocks
- Navigation → Room lobby: opens online play
- Room lobby → Room repository: manages room
- Room repository → Online API: fetches and writes
- Room repository → Room service: syncs room events