ComposeNews
This repo is a playground about best practices, using updated libraries and solutions in the Android world!
Check the apk from here
βοΈ Architecture
The main architecture of code based on MVI + CLEAN architecture. The division criteria is a hybrid strategy based on Feature + Layer by module.
For the detail of architecture, please read this article.
π¦ Navigation
For the detail of navigation implementations, please read this article.
π± Previewing
For the detail of handling preview of composable functions in this code-base, please read this article.
π Technologies
- Jetpack Compose
- CLEAN architecture
- MVI architectural pattern
- Coroutine Flow
- SQLDelight database
- Dagger Hilt
- Navigation
- Ktor client
- Work manager
- Unit test
- Support large screens
- Monochromatic app icon
- Version catalog & Convention Plugin (For the detail, please read this article)
- CI
- Git Hooks
- GitHub Actions
- Static Analysis(Kotlinter, Detekt) (For the detail, please read this article)
We are porting the project to KMP. Here's the steps:
- [x] GSON → Kotlinx Serialization
- [x] ROOM → SQLDelight
- [x] Retrofit → Ktor
- [x] JUnit → Kotest
- [ ] Dagger-Hilt → Koin
- [ ] Jetpack Compose → Compose Multiplatform
πΈ Screenshots
Light theme
Dark theme
Dynamic theme
Large screen support (Foldable, Tablet, and Desktop)
Additional Resources
- Git Hooks - Learn about Git hooks used in this project for code formatting and analysis.
- GitHub Actions - Explore the GitHub Actions workflows used to validate the code.
- Static Analysis - Discover how static analysis tools like Detekt and Ktlint are used in this project for code quality assurance.
π€π» Contribute
Any PRs are very welcome! π You can fix a bug, add a feature, optimize performance and even propose a new cool approach in code-base architecture. Feel free and make a PR! π
We use static analysis tools like Detekt and Ktlint in this project. Please either set up Git Hooks on your project or run Static Analysis before creating PR.