{"id":13773559,"url":"https://github.com/ImnIrdst/iiCnma","last_synced_at":"2025-05-11T05:34:59.037Z","repository":{"id":38919781,"uuid":"312205870","full_name":"ImnIrdst/iiCnma","owner":"ImnIrdst","description":"A playground android app, showcasing the latest technologies and architectures using the Movie Database APIs.","archived":false,"fork":false,"pushed_at":"2023-02-09T01:02:02.000Z","size":6249,"stargazers_count":47,"open_issues_count":12,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-17T08:44:25.355Z","etag":null,"topics":["android","clean-architecture","coroutine","coroutines-flow","hilt","mockk","mvvm","navigation-component","paging3"],"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/ImnIrdst.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":"2020-11-12T07:56:25.000Z","updated_at":"2024-05-07T10:39:57.000Z","dependencies_parsed_at":"2023-02-16T02:45:53.660Z","dependency_job_id":null,"html_url":"https://github.com/ImnIrdst/iiCnma","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/ImnIrdst%2FiiCnma","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ImnIrdst%2FiiCnma/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ImnIrdst%2FiiCnma/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ImnIrdst%2FiiCnma/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ImnIrdst","download_url":"https://codeload.github.com/ImnIrdst/iiCnma/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253523688,"owners_count":21921815,"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","coroutine","coroutines-flow","hilt","mockk","mvvm","navigation-component","paging3"],"created_at":"2024-08-03T17:01:17.139Z","updated_at":"2025-05-11T05:34:54.009Z","avatar_url":"https://github.com/ImnIrdst.png","language":"Kotlin","funding_links":[],"categories":[":art: Pattern"],"sub_categories":["MVVM"],"readme":"# iiCnma\nA playground android app, showcasing the latest technologies and architecture patterns using the [Movie Database](https://www.themoviedb.org/) APIs.\n\n# Demo\n\u003cspan\u003e\u003cimg src=\"https://github.com/ImnIrdst/iiCnma/blob/main/demo/iicnma-home-detail.gif\" width=\"170\" height=\"320\"\u003e\u003c/span\u003e\n\u003cspan\u003e\u003cimg src=\"https://github.com/ImnIrdst/iiCnma/blob/main/demo/iicnma-search.gif\" width=\"170\" height=\"320\"\u003e\u003c/span\u003e\n\u003cspan\u003e\u003cimg src=\"https://github.com/ImnIrdst/iiCnma/blob/main/demo/iicnma-favorites.gif\" width=\"170\" height=\"320\"\u003e\u003c/span\u003e\n\n# Technologies\n\n- Kotlin Coroutines, Flow, StateFlow\n- Hilt\n- Paging3\n- Navigation Component\n- LiveData\n- ViewModel\n- Room\n- Retrofit\n- OkHttp3\n- Glide\n- jUnit\n- Mockk\n- Coroutine Test\n\n# Architecture\nA custom architecture inspired by the [Google MVVM](https://developer.android.com/jetpack/guide) and the [Clean architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html).\n\nThis architecture allows app to be offline first. It gets data from the network if it doesn't exist in the local database and persists it. Local database is the single source of truth of the app and after its data changes, it notifies other layers using coroutine flows. \n\n# Build\nClone the repository and get an [API key](https://www.themoviedb.org/settings/api) from the Movie Database and put it in the `local.properties` file as below:\n\n```properties\napikey=\"YOUR_API_KEY\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FImnIrdst%2FiiCnma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FImnIrdst%2FiiCnma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FImnIrdst%2FiiCnma/lists"}