{"id":18495535,"url":"https://github.com/hivian/randomuserscomposeandroid","last_synced_at":"2026-04-21T10:05:59.843Z","repository":{"id":170796491,"uuid":"558800190","full_name":"hivian/RandomUsersComposeAndroid","owner":"hivian","description":"A simple Android app built with Kotlin, using Jetpack Compose and Koin. Project based on clean architecture and MVVM pattern. ","archived":false,"fork":false,"pushed_at":"2024-06-24T14:35:50.000Z","size":76932,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-27T01:04:04.299Z","etag":null,"topics":["android","android-jetpack","clean-architecture","jetpack-compose","koin","kotlin","mvvm","retrofit","room-database"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hivian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-28T10:23:44.000Z","updated_at":"2024-06-24T14:39:23.000Z","dependencies_parsed_at":"2024-06-24T11:12:16.228Z","dependency_job_id":"dc8c9eac-49ca-4734-8b4f-cb724ea1c207","html_url":"https://github.com/hivian/RandomUsersComposeAndroid","commit_stats":null,"previous_names":["hivian/android-compose-mvvm"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/hivian/RandomUsersComposeAndroid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hivian%2FRandomUsersComposeAndroid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hivian%2FRandomUsersComposeAndroid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hivian%2FRandomUsersComposeAndroid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hivian%2FRandomUsersComposeAndroid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hivian","download_url":"https://codeload.github.com/hivian/RandomUsersComposeAndroid/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hivian%2FRandomUsersComposeAndroid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32086822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T06:27:27.065Z","status":"ssl_error","status_checked_at":"2026-04-21T06:27:21.250Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-jetpack","clean-architecture","jetpack-compose","koin","kotlin","mvvm","retrofit","room-database"],"created_at":"2024-11-06T13:25:19.325Z","updated_at":"2026-04-21T10:05:59.824Z","avatar_url":"https://github.com/hivian.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eRandomUsersComposeAndroid\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://developer.android.com/jetpack/compose\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/compose-1.6.8-brightgreen\" alt=\"Compose Version\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://kotlinlang.org/docs/whatsnew18.html\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/kotlin-2.0.0-blue\" alt=\"Kotlin Version\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://docs.gradle.org/8.0.2/release-notes.html\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/gradle-8.4.1-blue\" alt=\"Gradle\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://android-arsenal.com/api?level=27\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/API-27%2B-blue\" alt=\"API\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/hivian/Android-Compose-MVVM/blob/master/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-green\" alt=\"License\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nA simple demo app built with Kotlin, using Jetpack Compose, based on clean architecture and MVVM pattern.\nData fetched from https://randomuser.me api and saved to Android database\n\nThis project is the Android copy of that [Kotlin Multiplatform project](https://github.com/hivian/RandomUsersComposeMultiplatform)\n\n## Preview\n\u003cp\u003e\n  \u003cimg src=\"preview1.gif\" width=\"270\"/\u003e\n  \u003cimg src=\"preview2.gif\" width=\"270\"/\u003e\n\u003c/p\u003e\n\n## Features\n\n- [x] Offline mode\n- [x] Pagination: infinite scroll\n- [x] Reverse geocoding with Maps SDK\n- [x] Specific error messages with retry action\n- [x] Dark mode\n\n## Tech stack\n\n* [Compose](https://developer.android.com/jetpack/compose) - Declarative and simplified way for UI development\n* [Maps Compose](https://developers.google.com/maps/documentation/android-sdk/maps-compose) - Compose for the Google Maps SDK\n* [Koin](https://insert-koin.io/docs/quickstart/android/) - Dependency injection\n* [Navigation](https://developer.android.com/topic/libraries/architecture/navigation) - Screen routing handler\n* [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - UI related data holder, lifecycle aware\n* [Room](https://developer.android.com/topic/libraries/architecture/room) - Local database\n* [Retrofit](https://square.github.io/retrofit/) - Networking client\n* [Coroutines](https://developer.android.com/topic/libraries/architecture/coroutines) - Concurrency design pattern for asynchronous programming\n\n## Architecture\n\n* SOLID principles\n* MVVM clean architecture\n* Modularization by feature and by layer\n  \n### Modules dependencies\n```\nApp → homefeature\n    ↳ core   \n```\n\n### Layers dependencies\n```\npresentation → domain ← data\n```\n  \n### Global package structure\n```\ncom.hivian.randomusers                      # Root Module\n├── app                                     # Application entry point\n└── MainActivity                            # Screen entry point\n                                                   \ncom.hivian.randomusers.homefeature          # Main feature Module\n├── di                                      # Dependency injection module\n├── data                                    # Data layer\n│   ├── mappers                             # DTO to domain models mapper\n│   └── services                            # local \u0026 remote data source implementation\n├── domain                                  # Domain layer\n│   ├── models                              # Domain models\n│   ├── services                            # services contracts\n│   └── usecases                            # Use cases encapsulation for presentation layer\n└── presentation                            # Presentation layer\n    ├── home                                # Main screen \u0026 viewModel\n    ├── detail                              # Detail screen \u0026 viewModel\n    └── themes                              # Design system\n\ncom.hivian.randomusers.core                 # Core Module\n├── di                                      # Dependency injection module\n├── data                                    # Data sources\n│   ├── models                              # Entities \u0026 DTO Models\n│   ├── local                               # Local database client\n│   │   ├── converters                      # Complex data serializer\n│   │   └── dao                             # Data Access Object for Room\n│   └── remote                              # Remote data client \u0026 data wrappers\n├── domain                                  # Domain layer\n│   ├── base                                # Base classes\n│   ├── extensions                          # Kotlin extensions\n│   ├── services                            # Core services contracts\n│   └── usecases                            # Core usecases\n└── presentation                            # Presentation layer\n    ├── navigation                          # Navigation routes\n    └── services                            # UI services implementation\n```\n\n\n## Download\n\nGo to the [releases page](https://github.com/hivian/Android-Compose-MVVM/releases) to download the latest available apk.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhivian%2Frandomuserscomposeandroid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhivian%2Frandomuserscomposeandroid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhivian%2Frandomuserscomposeandroid/lists"}