{"id":18255445,"url":"https://github.com/roroche/androidvip","last_synced_at":"2025-04-04T17:31:14.816Z","repository":{"id":217038124,"uuid":"89282382","full_name":"RoRoche/AndroidVIP","owner":"RoRoche","description":"Android project to experiment the VIPER approach using mosby, RxJava and dagger2","archived":false,"fork":false,"pushed_at":"2020-04-26T16:50:00.000Z","size":144,"stargazers_count":21,"open_issues_count":1,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-01-14T07:50:47.427Z","etag":null,"topics":["android","dagger","dagger-2","dagger-android","dagger2","dagger2-mvp","daggermock","mockito","mosby","rxandroid","rxjava","rxjava-android","rxjava2","viper","viper-architecture"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RoRoche.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}},"created_at":"2017-04-24T20:06:33.000Z","updated_at":"2024-01-14T07:51:06.909Z","dependencies_parsed_at":"2024-01-14T08:05:04.955Z","dependency_job_id":null,"html_url":"https://github.com/RoRoche/AndroidVIP","commit_stats":null,"previous_names":["roroche/androidvip"],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoRoche%2FAndroidVIP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoRoche%2FAndroidVIP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoRoche%2FAndroidVIP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoRoche%2FAndroidVIP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RoRoche","download_url":"https://codeload.github.com/RoRoche/AndroidVIP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223150654,"owners_count":17095959,"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","dagger","dagger-2","dagger-android","dagger2","dagger2-mvp","daggermock","mockito","mosby","rxandroid","rxjava","rxjava-android","rxjava2","viper","viper-architecture"],"created_at":"2024-11-05T10:16:21.229Z","updated_at":"2024-11-05T10:16:23.662Z","avatar_url":"https://github.com/RoRoche.png","language":"Java","readme":"# AndroidVIP\n\nAndroid project to experiment the [VIPER approach](https://www.objc.io/issues/13-architecture/viper/).\n\n[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-AndroidVIP-brightgreen.svg?style=flat)](https://android-arsenal.com/details/3/5656)\n[![Dependency Status](https://www.versioneye.com/user/projects/58fe705d6ac171431cf950fc/badge.svg?style=flat-square)](https://www.versioneye.com/user/projects/58fe705d6ac171431cf950fc)\n\n![logo](https://raw.githubusercontent.com/RoRoche/AndroidVIP/master/assets/logo.png)\n\n\u003c!-- run the following command line: markdown-toc -i README.md --\u003e\n\n\u003c!-- toc --\u003e\n\n- [Motivations](#motivations)\n- [Technical base](#technical-base)\n- [Perspectives](#perspectives)\n- [Logo credits](#logo-credits)\n\n\u003c!-- tocstop --\u003e\n\n## Motivations\n\n- Tend toward the [VIPER approach](https://www.objc.io/issues/13-architecture/viper/)\n- Make it easier to test the application\n- Simplify the set up of asynchronous job with [RxJava](https://github.com/ReactiveX/RxJava)\n\n## Technical base\n\n- [mosby](https://github.com/sockeqwe/mosby) to set up the \"V\" and \"P\" of  the [VIPER approach](https://www.objc.io/issues/13-architecture/viper/)\n- [dagger2](https://google.github.io/dagger/) to set up the dependency injection system\n- [Rx.Observe](https://github.com/florent37/Rx.Observe) to ease the set up of asynchronous job, transforming Interactor's methods to Rx methods \n- [DaggerMock](https://github.com/fabioCollini/DaggerMock) to mock dagger2 objects\n- [mockito](http://site.mockito.org/) as a mocking framework\n\n## Perspectives\n\n- use of [bluelinelabs' Conductor library](https://github.com/bluelinelabs/Conductor) to build View-based application:\n    - to manage the \"V\" of the [VIPER approach](https://www.objc.io/issues/13-architecture/viper/)\n    - to provide the \"R\" of the [VIPER approach](https://www.objc.io/issues/13-architecture/viper/) (via the `Router` class)\n- set up the \"E\" of the  [VIPER approach](https://www.objc.io/issues/13-architecture/viper/) \n    - use of a [ContentProvider](https://developer.android.com/reference/android/content/ContentProvider.html)\n        - a combination of [ProviGen](https://github.com/TimotheeJeannin/ProviGen) and [AutoCursor](https://github.com/yongjhih/AutoCursor) could be relevant\n    - use of an [ORM](https://android-arsenal.com/tag/69)\n        - [requery](https://github.com/requery/requery), [DBFlow](https://github.com/Raizlabs/DBFlow) or [OrmLite](https://github.com/j256/ormlite-android) for example\n- use of [EasyFlow](https://github.com/Beh01der/EasyFlow) to manage screen's states (cf. [AndroidModularSample](https://roroche.github.io/AndroidModularSample/))\n\n## Bibliography\n\n- \u003chttp://hannesdorfmann.com/mosby/\u003e\n- \u003chttps://www.objc.io/issues/13-architecture/viper/\u003e\n- \u003chttps://medium.com/@fabioCollini/android-testing-using-dagger-2-mockito-and-a-custom-junit-rule-c8487ed01b56\u003e\n\n## Logo credits\n\nAnimals graphic by \u003ca href=\"http://www.flaticon.com/authors/freepik\"\u003eFreepik\u003c/a\u003e from \u003ca href=\"http://www.flaticon.com/\"\u003eFlaticon\u003c/a\u003e is licensed under \u003ca href=\"http://creativecommons.org/licenses/by/3.0/\" title=\"Creative Commons BY 3.0\"\u003eCC BY 3.0\u003c/a\u003e. Made with \u003ca href=\"http://logomakr.com\" title=\"Logo Maker\"\u003eLogo Maker\u003c/a\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froroche%2Fandroidvip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froroche%2Fandroidvip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froroche%2Fandroidvip/lists"}