{"id":17238352,"url":"https://github.com/hoc081098/comicreaderapp_mvi_coroutine_rxkotlin_jetpack","last_synced_at":"2025-05-16T12:07:24.070Z","repository":{"id":39921140,"uuid":"170987604","full_name":"hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack","owner":"hoc081098","description":"⚡️Comic reader app 📘 Learning MVVM / MVI with :cyclone: RxKotlin, Retrofit, Kotlinx Coroutine, Work Manager, Room, Firebase, AndroidX Startup, Clean Architecture, Arrow.Kt Functional Programming ... ❄️ androidx-startup, androidx-room, androidx-viewmodel, arrow-kt","archived":false,"fork":false,"pushed_at":"2025-03-25T18:10:54.000Z","size":27177,"stargazers_count":295,"open_issues_count":9,"forks_count":49,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-26T08:05:05.640Z","etag":null,"topics":["android-clean-architecture-kotlin","android-mvi","comic-reader","comics-reader","coroutines-android","functional-reactive-programming","jetpack-android","jetpack-lifecycle-components","jetpack-navigation","jetpack-workmanager","kotlin-coroutine","kotlin-coroutines","mvi","mvi-android","mvi-architecture","mvi-clean-architecture","mvvm-android","mvvm-pattern","rxkotlin","rxkotlin-android"],"latest_commit_sha":null,"homepage":"https://github.com/hoc081098/ViewBindingDelegate","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/hoc081098.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-16T09:48:36.000Z","updated_at":"2025-02-26T18:33:15.000Z","dependencies_parsed_at":"2023-10-01T16:06:41.330Z","dependency_job_id":"d112be52-124e-4f69-b6ac-29377c2f08a0","html_url":"https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack","commit_stats":{"total_commits":384,"total_committers":4,"mean_commits":96.0,"dds":0.078125,"last_synced_commit":"77d75578220442762f2b199b619222e89aac974d"},"previous_names":[],"tags_count":2,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoc081098%2FComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoc081098%2FComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoc081098%2FComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoc081098%2FComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hoc081098","download_url":"https://codeload.github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246777835,"owners_count":20832032,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-clean-architecture-kotlin","android-mvi","comic-reader","comics-reader","coroutines-android","functional-reactive-programming","jetpack-android","jetpack-lifecycle-components","jetpack-navigation","jetpack-workmanager","kotlin-coroutine","kotlin-coroutines","mvi","mvi-android","mvi-architecture","mvi-clean-architecture","mvvm-android","mvvm-pattern","rxkotlin","rxkotlin-android"],"created_at":"2024-10-15T05:45:21.352Z","updated_at":"2025-04-02T09:01:58.173Z","avatar_url":"https://github.com/hoc081098.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ComicReaderApp_MVI_Coroutine_RxKotlin\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\nComic reader app 📘. Learning MVVM / MVI with RxKotlin, Retrofit, Kotlin Coroutines\n\n[![Build CI](https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/actions/workflows/build.yml/badge.svg)](https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/actions/workflows/build.yml)\n[![Build Release APK](https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/actions/workflows/build-release.yml/badge.svg)](https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/actions/workflows/build-release.yml)\n[![Spotless check](https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/actions/workflows/spotless.yml/badge.svg)](https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/actions/workflows/spotless.yml)\n[![Validate Gradle Wrapper](https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/actions/workflows/gradle-wrapper-validation.yml/badge.svg)](https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/actions/workflows/gradle-wrapper-validation.yml)\n[![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fhoc081098%2FComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack\u0026count_bg=%2379C83D\u0026title_bg=%23555555\u0026icon=\u0026icon_color=%23E7E7E7\u0026title=hits\u0026edge_flat=false)](https://hits.seeyoufarm.com)\n\n## Observable 🌀 + Flow 🌊 + suspend function ⚡ = 💗💎❤️\n\n# Project features 🚀\nThis project brings to the table set of best practices, tools, and solutions:\n\n-   100% [Kotlin](https://kotlinlang.org/)\n-   Kotlin Coroutines with Flow\n-   Functional \u0026 Reactive programming with [RxKotlin](https://github.com/ReactiveX/RxKotlin), [RxJava3](https://github.com/ReactiveX/RxJava)\n-   Clean Architecture with MVI (Uni-directional data flow)\n-   [Λrrow - Functional companion to Kotlin's Standard Library](https://arrow-kt.io/)\n       - [Either](https://arrow-kt.io/docs/apidocs/arrow-core/arrow.core/-either/)\n       - [Monad Comprehensions](https://arrow-kt.io/docs/patterns/monad_comprehensions/)\n       - [Option](https://arrow-kt.io/docs/apidocs/arrow-core/arrow.core/-option/)\n       - [parZip](https://arrow-kt.io/docs/apidocs/arrow-fx-coroutines/arrow.fx.coroutines/par-zip.html)\n-   Modern architecture (Clean Architecture, Model-View-ViewModel)\n-   Navigation, single-activity architecture with [Jetpack Navigation](https://developer.android.com/guide/navigation)\n-   Initialize components at application startup with [AndroidX Startup](https://developer.android.com/topic/libraries/app-startup)\n-   Cache local data with [Room Persistence Library](https://developer.android.com/topic/libraries/architecture/room)\n-   Schedule tasks with [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager)\n-   ViewModel, LiveData, Lifecycle, ... with [Android Jetpack](https://developer.android.com/jetpack)\n-   Dependency injection [Koin](https://insert-koin.io/)\n-   Material Design [Material Components for Android](https://github.com/material-components/material-components-android)\n-   Kotlin Gradle DSL\n-   Firebase: Firestore, Authentication, Storage, Analytics, Crashlytics\n-   Gradle Kotlin DSL, Custom plugin\n\n## Download APK\n\n- [Download latest debug APK here](https://nightly.link/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/workflows/build/master/app-debug.zip)\n- [Download latest release APK here](https://nightly.link/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/actions/runs/1360316687/app-release.zip)\n\n# Develop\n- You must use **Android Studio Arctic Fox (2020.3.1)** (**note: Java 11 is now the minimum version required**)\n- Clone: `git clone https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin.git`\n- _Optional: **Delete `.idea` folder** if cannot open project_\n- Open project by `Android Studio` and run as usual\n\n# Screenshots\n\n|                         |                         |                         |                         |\n|        :---:            |          :---:          |        :---:            |          :---:          |\n| ![](screenshots/1.jpeg) | ![](screenshots/2.jpeg) | ![](screenshots/3.jpeg) | ![](screenshots/4.jpeg) |\n| ![](screenshots/5.jpeg) | ![](screenshots/6.jpeg) | ![](screenshots/7.jpeg) | ![](screenshots/8.jpeg) |\n| ![](screenshots/9.jpeg) | ![](screenshots/10.png) | ![](screenshots/11.png) | ![](screenshots/12.png) |\n| ![](screenshots/13.png) | ![](screenshots/14.png) | ![](screenshots/15.png) |                         |\n\n# LOC\n\n```sh\n--------------------------------------------------------------------------------\n Language             Files        Lines        Blank      Comment         Code\n--------------------------------------------------------------------------------\n Kotlin                 165        15406         1777          644        12985\n XML                     95         5181          464           81         4636\n Prolog                   7          127           18            0          109\n JSON                     2          103            0            0          103\n Markdown                 2          109           24            0           85\n Batch                    1           89           21            0           68\n--------------------------------------------------------------------------------\n Total                  272        21015         2304          725        17986\n--------------------------------------------------------------------------------\n```\n\n# Server and API\n\nClone this repository: https://github.com/hoc081098/comic_app_server_nodejs\n\n# License\n\n    MIT License\n\n    Copyright (c) 2019-2021 Petrus Nguyễn Thái Học\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.linkedin.com/in/hoc081098/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/36917223?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePetrus Nguyễn Thái Học\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/commits?author=hoc081098\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-hoc081098\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-hoc081098\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#design-hoc081098\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"https://github.com/hoc081098/ComicReaderApp_MVI_Coroutine_RxKotlin_Jetpack/issues?q=author%3Ahoc081098\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoc081098%2Fcomicreaderapp_mvi_coroutine_rxkotlin_jetpack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhoc081098%2Fcomicreaderapp_mvi_coroutine_rxkotlin_jetpack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoc081098%2Fcomicreaderapp_mvi_coroutine_rxkotlin_jetpack/lists"}