{"id":23209562,"url":"https://github.com/gaffycool/pawpal","last_synced_at":"2026-05-05T07:31:15.100Z","repository":{"id":258987527,"uuid":"876047315","full_name":"gaffycool/PawPal","owner":"gaffycool","description":"Dog Inspired app to allow users to search for their favourite dog, favourite and compare each dog","archived":false,"fork":false,"pushed_at":"2024-12-06T12:42:14.000Z","size":201,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T12:13:41.389Z","etag":null,"topics":["android","android-app","android-application","compose","host","jetpack","jetpacknavigation","kotlin","mvvm","mvvm-architecture","pinging"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gaffycool.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-21T10:06:03.000Z","updated_at":"2024-12-06T12:42:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"6a6db4de-6de1-4927-b6ea-a7963641e56e","html_url":"https://github.com/gaffycool/PawPal","commit_stats":null,"previous_names":["gaffycool/pawpal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gaffycool/PawPal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaffycool%2FPawPal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaffycool%2FPawPal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaffycool%2FPawPal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaffycool%2FPawPal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gaffycool","download_url":"https://codeload.github.com/gaffycool/PawPal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaffycool%2FPawPal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32640533,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"online","status_checked_at":"2026-05-05T02:00:06.033Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","android-app","android-application","compose","host","jetpack","jetpacknavigation","kotlin","mvvm","mvvm-architecture","pinging"],"created_at":"2024-12-18T18:18:19.497Z","updated_at":"2026-05-05T07:31:15.085Z","avatar_url":"https://github.com/gaffycool.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"## **PawPal** using Clean Android Architecture\n\n- PawPal allows the user to search for their favourite breed of dog using a public dog api. THe user\n  is able to save thier favourite breed of dog into thier favourite list, and also able to search\n  for different breed of dogs as well as compare different dog breed side by side\n- The app also has offline caching via a local db that allows the user to use the device offline to\n  see their favourite Dogs.\n\nhttps://github.com/user-attachments/assets/2fafb303-1398-43e5-9ac2-8b7413a474d5\n\n**App Archetecture:**\nThis repository contains an implementation of a clean architecture for Android applications using\nCompose, MVVM, Hilt, Coroutines, Kotlin Flow, Repository, Room, Retrofit, Mockk and JUnit.\n\nThe project is divided into several modules, including:\n\n- `app`: The main application module, responsible for defining the UI using Compose and coordinating\n  with the presentation layer.\n- `commonDomain`: The domain module, responsible for defining the business logic of the application\n  and exposing it through interfaces.\n    - `interactor`: The Interactors are responsible for call repository functions and do the\n      buisness logics and return required models to viewmodel.\n- `commonData`: The data module, responsible for defining the data repository, api services and\n  DTOs.\n    - `data-repository`: The repository module, responsible for implementing the interfaces defined\n      in the domain module and providing data from both the local and remote data sources.\n    - `data-local`: The local data source module, responsible for implementing the logic to access\n      data stored locally, using Room as the database.\n    - `data-remote`: The remote data source module, responsible for implementing the logic to access\n      data from a remote API, using Retrofit as the network client.\n\n**Diagram of PawPal App Archetecture:**\n![pawpal app diagram](https://github.com/user-attachments/assets/f5182271-c5bc-4400-9a6f-d116adb2b590)\n\nThe project follows a layered architecture approach, with each layer (presentation, domain,\nrepository and data) having its own set of responsibilities and being completely decoupled from the\nother layers. The communication between the layers is done through well-defined interfaces, allowing\nfor easy testing and future modifications.\n\n**Dependencies**\nPublic API: https://dog.ceo/dog-api/\n\n**Unit testing:**\n\n- Unit testing with JUnit 100% coverage for all Viewmodels, Repositories and Interactors\n- Unit testing with Screenshot testing using\n  Paparazzi https://betterprogramming.pub/sanely-test-your-android-ui-libraries-with-paparazzi-b6d46c55f6b0\n\nProprietary License: This project is copyrighted and all rights are reserved. No use,\nredistribution, or modification is permitted without explicit permission.\n\nCopyright (c) 2024-2025 [@GaffyCool]. All rights reserved. This software is proprietary and cannot\nbe used, modified, or redistributed without explicit permission from the author. No warranties are\nprovided, and use of this software is entirely at your own risk.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaffycool%2Fpawpal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgaffycool%2Fpawpal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaffycool%2Fpawpal/lists"}