{"id":26304421,"url":"https://github.com/vipulshah2010/foodapp","last_synced_at":"2026-04-01T21:49:04.239Z","repository":{"id":58950105,"uuid":"141035630","full_name":"vipulshah2010/FoodApp","owner":"vipulshah2010","description":"Proof of concept for food app [JetPack + Coroutines + Flow + MockK + JaCoCo coverage + SonarQube]","archived":false,"fork":false,"pushed_at":"2020-08-04T12:32:51.000Z","size":7761,"stargazers_count":31,"open_issues_count":0,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-03-28T00:22:48.589Z","etag":null,"topics":["architecture-components","clean-architecture","constraint-layout","coroutines","coroutines-android","coroutines-flow","jacoco-reports","kotlin-android","mvvm-architecture","repository-pattern","room-persistence-library","sonarqube","test-coverage"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/vipulshah2010.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}},"created_at":"2018-07-15T14:49:32.000Z","updated_at":"2025-02-20T16:48:33.000Z","dependencies_parsed_at":"2022-09-17T18:11:49.313Z","dependency_job_id":null,"html_url":"https://github.com/vipulshah2010/FoodApp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vipulshah2010/FoodApp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vipulshah2010%2FFoodApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vipulshah2010%2FFoodApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vipulshah2010%2FFoodApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vipulshah2010%2FFoodApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vipulshah2010","download_url":"https://codeload.github.com/vipulshah2010/FoodApp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vipulshah2010%2FFoodApp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: 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":["architecture-components","clean-architecture","constraint-layout","coroutines","coroutines-android","coroutines-flow","jacoco-reports","kotlin-android","mvvm-architecture","repository-pattern","room-persistence-library","sonarqube","test-coverage"],"created_at":"2025-03-15T08:16:24.601Z","updated_at":"2026-04-01T21:49:04.205Z","avatar_url":"https://github.com/vipulshah2010.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eFoodApp\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/vipulshah2010/FoodApp/actions\"\u003e\u003cimg alt=\"Build Status\" src=\"https://github.com/skydoves/Pokedex/workflows/Android%20CI/badge.svg\"/\u003e\u003c/a\u003e \n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e  \nFoodApp is a small playground application built using MVVM architecture.\u003cbr\u003eThis project is primarily built with purpose of trying out new android tech stack.\u003cbr\u003e\nIt showcase Usecase and Repository architecture pattern for loading data from network and persisting it in database.\n\u003c/p\u003e\n\u003c/br\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"/art/cover.png\"/\u003e\n\u003c/p\u003e\n\n## Library and Frameworks\n- Minimum SDK level 21\n- [Kotlin](https://kotlinlang.org/) based, [Coroutines](https://github.com/Kotlin/kotlinx.coroutines) + [Flow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/) for asynchronous.\n- Dagger-Hilt (alpha) for dependency injection.\n- JetPack\n  - LiveData - notify domain layer data to views.\n  - Lifecycle - dispose of observing data when lifecycle state changes.\n  - ViewModel - UI related data holder, lifecycle aware.\n  - Room Persistence - construct a database using the abstract layer.\n- Architecture\n  - MVVM Architecture (View - DataBinding - ViewModel - Model)\n  - Repository pattern\n- [Retrofit2 \u0026 OkHttp3](https://github.com/square/retrofit) - construct the REST APIs and paging network data.\n- [Retrofit](https://square.github.io/retrofit/) - A type-safe HTTP client for Android and Java.\n- [Gson](https://github.com/google/gson) - JSON library for Kotlin and Java.\n- [coil](https://github.com/coil-kt/coil)\n- [Material-Components](https://github.com/material-components/material-components-android) - Material design components like ripple animation, cardView.\n\n## Code Coverage and Reporting\n - This project uses Jacoco configuration to measure code coverage and currently the most widely used.\n - SonarQube is used for inspecting the Code Quality and Security codebase. \n - SonarQube consumes Jacoco test coverage report and displays it on [sonarcloud](https://sonarcloud.io/dashboard?id=vipulshah2010_FoodApp)\n\n**Run following command from root folder to generate JaCoco reports and view test coverage on** [sonarcloud](https://sonarcloud.io/dashboard?id=vipulshah2010_FoodApp)\n ```\n./gradlew clean jacocoTestDebugUnitTestReport sonarqube\n```\n\n## Planned workflow:\n- More unit test coverage\n- Instrumentation test coverage\n- Fix Shared element transition\n\n## Architecture\nFoodApp is based on MVVM architecture and a repository pattern.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"/art/architecture.png\"/\u003e\n\u003c/p\u003e\n\n## Find this repository useful? :heart:\n__[follow](https://twitter.com/_vipuls)__ me on twitter! 🤩\n\n# License\n```xml\nDesigned and developed by 2020 vipulshah2010 (Vipul Shah)\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvipulshah2010%2Ffoodapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvipulshah2010%2Ffoodapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvipulshah2010%2Ffoodapp/lists"}