Bogadex is a small demo and functionnal application based on modern Android application tech-stacks and MVVM architecture.
This project aim to regroup and present most of current practices and patterns.
Also dealing with data (from BoardGameGeek) and presenting them in elegants ways.
Go to the Releases to download the latest APK.
- Free and open source
- List, Sort and Filter all you BGG BoardGameGeekCollection
This project takes advantage of best practices, and many popular libraries and tools in the Android ecosystem.
-
Kotlin - 100% Kotlin - Code and Scripts
-
Flow for asynchronous.
-
Lifecycle - dispose of observing data when lifecycle state changes.
-
ViewModel - UI related data holder, lifecycle aware.
-
Hilt-Dagger for dependency injection.
-
- Compose - UI build 100% with Jetpack Compose
- WorkManager - Updating and maintaining data up-to-date periodically and asynchronous
- DataStore - for shared preferences
- Room - Database for cache / offline storage
-
Material 3 - Using Material Design 3
- Dark Mode - Generate theme trough Material Theme Builder
-
Retrofit2 & OkHttp3 - construct the REST APIs and paging network data.
-
Coil - Async images management.
-
SonarCloud - Code quality and coverage analysis
-
Gradle optimizations - Some gradle tips to optimize build time
Release a build version triggers in the following scenarios:
- You push a version tag to the repository.
- You create a pull request targeting the main branch.
- Check on pre-commit Article
- lint - for Android critical issues
- KtLint - for kotlin file quality
- Auto version from git tag Article Plugin
- Auto delivery from git tag
- on GitHub Release
- on Firebase App Distribution
- π§ on Google Play Store - Beta & Production
- Release signing Article
The CI uses Spotless to check if your code is formatted correctly and contains the right licenses. Internally, Spotless uses ktlint to check the formatting of your code. To set up ktlint correctly with Android Studio, follow one of the listed setup options.
Before committing your code, run ./gradlew app:spotlessApply
to automatically format your code.
Bogadex is based on MVVM architecture and a repository pattern with a modular approach.
- MVVM -> MVI Architecture (View - ViewModel - Model)
- Business oriented with UseCases pattern - By layer or feature? Why not both?! Guide to Android app modularization
- Repository pattern
- UI 100% Jetpack compose
Concerns are separate by modules containing feature
Each modules/feature share a common clean architecture pattern
Bogadex is inspired by the wonderful repositories :
- Jaewoong Eum, especially Pokedex.
- Igor Wojda and his great repo android-showcase.
- Lopez Mikhael with Pokedex Compose
Thank you for the great job.
Pokedex using the BoardGameGeekAPI for constructing RESTful-oriented API.
BoardGameGeekAPI provides a XML API interface to highly detailed objects built from thousands of lines of data related to Boardgames.