Skip to content

a project to reproduce bugs and try new things on

Notifications You must be signed in to change notification settings

mateuszkwiecinski/github_browser

Repository files navigation

Github Repo Browser

After merge build ktlint

General

App shows list of Toptal's repositories on Github and shows selected repository details, such as number of opened issues, number of closed, number of the opened pull request and number of closed* pull requests.
* Merged PullRequests are treated as closed ones.

Authentication

To build the app with actual Github API access there is a requirement to pass a Personal access token.
Access token can be provided one of following methods:

  • Passing project property ./gradlew build -Pgithub.token=$TOKEN
  • Setting an environment variable github_token=$TOKEN
  • Adding a github.token=$TOKEN to local.properties file.

Architecture

Application follows Clean Architecture approach. To provide additional support for developers to maintain correct dependencies between layers, app has been divided into mutliple Gradle modules. Each module has single responsibility:

  • Domain layer
    • :domain - Module contains code that describes all business states and represents business logic
  • Data layer
    • :data:graphql - Holds GrapQLl implementation of domain gateways. Uses Apollo GraphQL library to consume Github's GraphQL API v4.
    • :data:mocked - Main purpose of this module is to speed up development process by excluding all external services. Can be also used for automated UI tests.
  • Presentation layer
    • presentation - Accommodates UI related classes. Relies on Android Framework.
  • Configuration
    • app - Provides Dependency Injection configuration logic, enables project to follow dependency inversion rule
    • buildSrc - Abstracts imperative build configuration logic. Having shared common code allows having minimal configuration of specific modules.

Following diagram presents dependencies between modules:

Project's architecture

Code style

Project follows official Kotlin code style guidelines, which is greatly supported by automatic tools such as Detekt and ktlint.

To run all code style tasks for the whole project you may run ./gradlew projectCodestyle task.

About

a project to reproduce bugs and try new things on

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages