{"id":20064104,"url":"https://github.com/hossein69ameri/movieapi","last_synced_at":"2026-01-04T00:08:29.105Z","repository":{"id":182544707,"uuid":"587610010","full_name":"hossein69ameri/MovieAPI","owner":"hossein69ameri","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-20T15:22:04.000Z","size":156,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-23T17:18:14.844Z","etag":null,"topics":["android","kotlin","mvvm"],"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/hossein69ameri.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}},"created_at":"2023-01-11T06:41:59.000Z","updated_at":"2024-10-10T09:58:07.000Z","dependencies_parsed_at":"2023-07-20T12:12:38.917Z","dependency_job_id":null,"html_url":"https://github.com/hossein69ameri/MovieAPI","commit_stats":null,"previous_names":["hossein69ameri/movieapi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hossein69ameri%2FMovieAPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hossein69ameri%2FMovieAPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hossein69ameri%2FMovieAPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hossein69ameri%2FMovieAPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hossein69ameri","download_url":"https://codeload.github.com/hossein69ameri/MovieAPI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243997038,"owners_count":20380980,"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","kotlin","mvvm"],"created_at":"2024-11-13T13:44:49.928Z","updated_at":"2026-01-04T00:08:29.062Z","avatar_url":"https://github.com/hossein69ameri.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MovieAPI\nMovieAPI is a sample Android project using [MoviesApi](https://moviesapi.ir/) based on MVVM architecture. It showcases the latest Android tech stacks with well-designed architecture and best practices\n\n# Screen Shot\n\u003cimg src=\"https://user-images.githubusercontent.com/103646893/212541356-ac37b954-754e-4a93-9806-413bbeda2e6e.png\" data-canonical-src=\"https://gyazo.com/eb5c5741b6a9a16c692170a41a49c858.png\" width=\"200\" height=\"400\" /\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/103646893/212541907-aeac1db8-f10c-4d7d-91bd-aa64c2fb553d.png\" data-canonical-src=\"https://gyazo.com/eb5c5741b6a9a16c692170a41a49c858.png\" width=\"200\" height=\"400\" /\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/103646893/212541946-0b3d091b-a697-44b9-a59e-34c0f11d39bd.png\" data-canonical-src=\"https://gyazo.com/eb5c5741b6a9a16c692170a41a49c858.png\" width=\"200\" height=\"400\" /\u003e\n\n# Features\n100% Kotlin\n\nMVVM architecture\n\nAndroid Architecture Components\n\nKotlin Coroutines + Flow\n\nSingle activity pattern\n\nDependency injection\n\n# Tech Stacks\n[Retrofit](https://square.github.io/retrofit/) + [OkHttp](https://square.github.io/okhttp/) - RESTful API and networking client.\n\n[Hilt](https://dagger.dev/hilt/)  - Dependency injection.\n\n[ViewBinding](https://developer.android.com/topic/libraries/view-binding) - View binding is a feature that allows you to more easily write code that interacts with views \n\n[Android Architecture Components](https://developer.android.com/topic/libraries/architecture)  - A collections of libraries that help you design rebust, testable and maintainable apps.\n\n[ViewModel](https://developer.android.com/reference/androidx/lifecycle/ViewModel)  - UI related data holder, lifecycle aware.\n\n[Navigation component](https://developer.android.com/guide/navigation)  -  Fragment routing handler\n\n[Coroutines](https://developer.android.com/kotlin/coroutines) - Concurrency design pattern for asynchronous programming.\n\n[Flow](https://developer.android.com/kotlin/flow) - Stream of value that returns from suspend function.\n\n[Coil](https://github.com/coil-kt/coil) - Image loading\n\n# Architectures\n![alt - Github](https://raw.githubusercontent.com/amitshekhariitbhu/MVVM-Architecture-Android/master/assets/mvvm-arch.png)\n\n**View** : Activity/Fragment with UI-specific logics only.\n\n**ViewModel** : It keeps the logic away from View layer, provides data streams for UI and handle user interactions\n\n**Model** :  Repository pattern, data layers that provide interface to manipulate data from both the local and remote data sources. The local data sources will serve as single source of truth\n\n# Contact\nHave an project? DM me at\n\nhossein.arabameri69@gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhossein69ameri%2Fmovieapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhossein69ameri%2Fmovieapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhossein69ameri%2Fmovieapi/lists"}