{"id":13609636,"url":"https://github.com/ferPrieto/MVVM-Modularized","last_synced_at":"2025-04-12T20:32:17.840Z","repository":{"id":90094667,"uuid":"216438304","full_name":"ferPrieto/MVVM-Modularized","owner":"ferPrieto","description":"A clean architecture approach (modular) using MVVM, Dagger2, LiveData and RxAndroid","archived":false,"fork":false,"pushed_at":"2020-06-01T23:42:41.000Z","size":14126,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-07T15:46:00.244Z","etag":null,"topics":["android","android-navigation","dagger2","espresso","fragments","jetpack","jetpack-android","ktx-library","livedata","mockwebserver","modular","mvvm","rxjava-android"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ferPrieto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-10-20T22:57:00.000Z","updated_at":"2021-11-25T08:36:31.000Z","dependencies_parsed_at":"2024-01-16T23:57:49.185Z","dependency_job_id":null,"html_url":"https://github.com/ferPrieto/MVVM-Modularized","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferPrieto%2FMVVM-Modularized","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferPrieto%2FMVVM-Modularized/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferPrieto%2FMVVM-Modularized/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferPrieto%2FMVVM-Modularized/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ferPrieto","download_url":"https://codeload.github.com/ferPrieto/MVVM-Modularized/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248629907,"owners_count":21136341,"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","android-navigation","dagger2","espresso","fragments","jetpack","jetpack-android","ktx-library","livedata","mockwebserver","modular","mvvm","rxjava-android"],"created_at":"2024-08-01T19:01:36.675Z","updated_at":"2025-04-12T20:32:13.098Z","avatar_url":"https://github.com/ferPrieto.png","language":"Kotlin","readme":"# JokesApp\n\nA demo app to show random jokes, with the aim of showing Clean Architecture and Clean code principles\nin a MVVM setup, LiveData and Rxjava.\n\nThere's a cache memory used to save and retrieve a custom joke. In order to show a data cache implementation.\n\n## About the project\n\nFor simplicity, I've chosen the ICNDb free API:\nhttp://www.icndb.com/api/\n\n### Initial approach\n\nThe initial Clean Architecture approach was developed by me in a Bitbucket repository using:\n- MVVM\n- RXJava\n\n### Goals\n\nIn order to follow the latest Android standards, the project will include the next points (progressively):\n- ~~Complete the VM unit tests~~ (DONE)\n- ~~LiveData, instead of Rx (outputs)~~ (DONE)\n- ~~UI Tests using Espresso and Robot pattern~~ (reference [Adam McNeilly]) (DONE)\n- ~~MockWebServer for testing HTTP clients~~ (DONE)\n- ~~Add Navigation Module~~ (DONE)\n- ~~Improve UI elements~~ (DONE)\n- ~~Add feature Detail~~ (DONE)\n- Change modules for feature Module, in order to create two branches: `Feature-Modules` and `Data-Layer-Modules`\n\n\n[Adam McNeilly]: https://github.com/AdamMc331\n\n## Libraries Used\n\n* [Rx][0] for reactive style programming (from VM to Data).\n* [LiveData][1] for reactive style programming (from VM to UI). \n* [Navigation][2] for in-app navigation. \n* [Rx][3] for cache storage.\n* [Dagger2][4] for dependency injection.\n* [Retrofit][5] for REST api communication.  \n* [Timber][6] for logging.\n* [Espresso][7] for UI tests.\n* [Mockito-Kotlin][8] for mocking in tests.\n* [MockWebServer][9] for Instrumentation tests.\n* [AndroidX Test Library][10] for providing JUnit4 and functions as `launchActivity` in UI tests,\n\n[0]:  https://github.com/ReactiveX/RxAndroid\n[1]:  https://developer.android.com/topic/libraries/architecture/livedata\n[2]:  https://developer.android.com/topic/libraries/architecture/navigation/\n[3]:  https://github.com/ReactiveX/RxAndroid\n[4]:  https://github.com/google/dagger\n[5]:  https://github.com/square/retrofit\n[6]:  https://github.com/JakeWharton/timber\n[7]:  https://developer.android.com/training/testing/espresso/\n[8]:  https://github.com/nhaarman/mockito-kotlin\n[9]:  https://github.com/square/okhttp/tree/master/mockwebserver\n[10]: https://github.com/android/android-test\n\n## Demo\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Demo-JokesApp.gif\"\u003e\n\u003c/p\u003e\n\n\u003ca href=\"https://www.buymeacoffee.com/DSbMElGNU\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me A Coffee\" style=\"height: auto !important;width: auto !important;\" \u003e\u003c/a\u003e\n\n#  License\n\n    Copyright 2019 Fernando Prieto Moyano\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.","funding_links":["https://www.buymeacoffee.com/DSbMElGNU"],"categories":["Kotlin"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FferPrieto%2FMVVM-Modularized","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FferPrieto%2FMVVM-Modularized","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FferPrieto%2FMVVM-Modularized/lists"}