{"id":20064099,"url":"https://github.com/hossein69ameri/foody","last_synced_at":"2026-05-08T22:34:23.336Z","repository":{"id":182544708,"uuid":"576659861","full_name":"hossein69ameri/Foody","owner":"hossein69ameri","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-21T05:47:38.000Z","size":4981,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-02T10:41:51.420Z","etag":null,"topics":["android","api","kotlin","motionlayout","retrofit","viewpager"],"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":"2022-12-10T15:09:11.000Z","updated_at":"2024-10-10T09:57:31.000Z","dependencies_parsed_at":"2023-07-20T12:12:41.051Z","dependency_job_id":null,"html_url":"https://github.com/hossein69ameri/Foody","commit_stats":null,"previous_names":["hossein69ameri/foody"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hossein69ameri/Foody","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hossein69ameri%2FFoody","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hossein69ameri%2FFoody/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hossein69ameri%2FFoody/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hossein69ameri%2FFoody/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hossein69ameri","download_url":"https://codeload.github.com/hossein69ameri/Foody/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hossein69ameri%2FFoody/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32800320,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","api","kotlin","motionlayout","retrofit","viewpager"],"created_at":"2024-11-13T13:44:48.549Z","updated_at":"2026-05-08T22:34:23.319Z","avatar_url":"https://github.com/hossein69ameri.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Foody\nThe application will work with `local` and `remote` data sources. And for the remote data source, a third-party API for food recipes, called [Spoonacular API](https://spoonacular.com/food-api) , was used. I am going to teach you how to establish a connection between your application and the server. So basically we will send a `GET request` to our `API`  and receive a list of food recipes as a response. Also, the application will not be able to handle any internet connection and store or cache the data locally in the database when needed.\n\nAlso from the application we can search recipes directly from our API. So if you have your favorite flavor, you can search for it here and you will probably find a lot of amazing recipes. It will also have Favorites Fragment where we can save our favorite recipes to use later when we need them. And finally the app will have its fun side, and that's a food joke snippet.\n# Screen Shot\n\u003cimg src=\"https://user-images.githubusercontent.com/103646893/212546482-971c2f83-d528-4928-8923-08b10b10e191.png\" data-canonical-src=\"https://gyazo.com/eb5c5741b6a9a16c692170a41a49c858.png\" width=\"200\" height=\"400\" /\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/103646893/212546497-ce04e86d-6194-4747-8a41-ef0cf9d4d3be.png\" data-canonical-src=\"https://gyazo.com/eb5c5741b6a9a16c692170a41a49c858.png\" width=\"200\" height=\"400\" /\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/103646893/212546516-a930550a-0c6a-4fde-bc4a-649763690086.png\" data-canonical-src=\"https://gyazo.com/eb5c5741b6a9a16c692170a41a49c858.png\" width=\"200\" height=\"400\" /\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/103646893/212546506-4b910470-e281-49f7-a7d4-18d39fceb917.png\" data-canonical-src=\"https://gyazo.com/eb5c5741b6a9a16c692170a41a49c858.png\" width=\"200\" height=\"400\" /\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/103646893/212546489-b038ba32-6479-4c8f-8afd-1eb699388332.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\nLiveData\n\nSingle activity pattern\n\nOffline Cache\n\nREST API\n\nMotion Layout\n\nViewPager2\n\n\n\nDependency injection\n\n# Built with\n[Kotlin](https://kotlinlang.org/) - First class and official programming language for Android development.\n\n[LiveData](https://developer.android.com/topic/libraries/architecture/livedata) - Data objects that notify views when the underlying database changes.\n\n[DataStore](https://developer.android.com/topic/libraries/architecture/datastore) - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers\n\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%2Ffoody","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhossein69ameri%2Ffoody","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhossein69ameri%2Ffoody/lists"}