A modern Android application built with Kotlin and Jetpack Compose for tracking, managing, and analyzing scores and rounds across various popular card game formats.
- Multiple Game Modes: Play with different rulesets seamlessly:
- 240 Mode: Keep playing rounds until a player reaches 240+ points. Includes a strategic "Chance" system allowing players to use up to 3 chances to limit round damage.
- 7s Mode: A game of exactly 7 rounds, where the first and last rounds score double!
- 5s Mode: A faster game spanning 5 rounds, also with double scores on the first and last rounds.
- Auto-Save & Persistent History: Your games are saved automatically via Room Database. Go back and review old games, round-by-round point allocations, and find out who lost.
- Export to CSV: Extract your game history into a CSV spreadsheet. Download the report directly or share it instantly with friends through any messaging application!
- Smart Player Setup: As you play, the app remembers player names to quickly auto-complete future match setups.
- Beautiful Modern UI: Fully designed in Jetpack Compose featuring Material Design 3 components, smooth transitions, and dynamic Dark/Light Theme support.
- Language: Kotlin
- UI Toolkit: Jetpack Compose (Material 3)
- Architecture: MVVM (Model-View-ViewModel) approach for robust state management.
- Asynchronous Processing: Kotlin Coroutines &
StateFlow - Database Components: Room Database with KSP annotation processing.
- Navigation: Jetpack Navigation Compose.
- Exporting API: Core Android IO, Context Intents, and FileProvider.
- Clone the repository:
git clone https://github.com/your-username/Cards-Android.git
- Open the project in the latest stable version of Android Studio.
- Wait for Gradle sync to download the necessary UI and Room architecture dependencies.
- Run the application on an Android Emulator or a physical device targeting API 31+.
data/: ContainsRoomdatabase classes (AppDatabase,GameDao), Entity representations (GameEntity,RoundEntity,PlayerScoreEntity), and theExcelExporterutility.model/: Data classes representing pure business domain logic (GameMode,Player).ui/screens/: Composable screens making up the View layer (PlayerSetupScreen,GameScreen,HistoryScreen,HistoryDetailScreen).viewmodel/: The primaryGameViewModelcoordinating state updates and tying backend business rules to frontend View states.MainActivity.kt: The single-activity entry point hosting application navigation.
Contributions, issues, and feature requests are welcome! Feel free to check issues page if you have any suggestions or find any bugs.



