https://github.com/bluestormdna/randomusers
A basic master detail Android App using Kotlin, Compose, Room, Paging 3, Ktor and other common libraries
https://github.com/bluestormdna/randomusers
Last synced: about 1 month ago
JSON representation
A basic master detail Android App using Kotlin, Compose, Room, Paging 3, Ktor and other common libraries
- Host: GitHub
- URL: https://github.com/bluestormdna/randomusers
- Owner: BluestormDNA
- Created: 2025-01-23T16:39:36.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-01-23T17:45:45.000Z (3 months ago)
- Last Synced: 2025-01-23T18:40:48.006Z (3 months ago)
- Language: Kotlin
- Size: 410 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# RandomUsers
A basic master detail Android App using Kotlin, Compose, Room, Paging 3, Ktor and other common libraries
It fetches data from https://randomuser.me/
## Screenshots
![]()
![]()
![]()
![]()
## Features
* Master / Detail screens with light / dark theme
* Paging
- It loads data from the backend on demand.
- Saves paging indices and preferences to `DataStore`
* Database caching
- Already cached data will not be downloaded again till invalidation (not implemented).
* Filtering
- Filters data models by `name` or `lastname` or `email`
* Swipe to delete (it actually marks entities as invisible so they may be recoverable)
* Basic error controlling and retry mechanisms
* Unit and Instrumentation tests for `UserViewModel`, `DataStoreManager` and `UserDao`
* Code Coverage for unit tests via KoverThis features are defined inside a layered MVVM UDF architecture.
## Dependencies
### App dependencies and setup
This App was developed with `Android Studio Ladybug Feature Drop | 2024.2.2` and it uses `AGP 8.8.0` and `Gradle 8.10.2`
This App relies in several common libraries on the Android ecosystem mainly provided by Google and Jetbrains.
The process of choosing some of them was influenced by a possible migration to KMP. A simplified list follows:Repositories:
* google()
* mavenCentral()
* gradlePluginPortal()Dependencies:
* AndroidX / Jetpack
- Core
- Lifecycle
- Activity
- Compose
- Navigation
- Room
- Datastore
- Paging
- Koin
* KotlinX
- Coroutines
- Serialization
* Coil
* Ktor
* Koin
* Mokkery### TODO
Write more tests
Revisit footer when loading
Revisit UI
Actually move this to a KMP project