Skip to content

View your repositories on GitHub and their issues

License

Notifications You must be signed in to change notification settings

slowburn-404/GiTrack

Repository files navigation

GiTrack

GiTrack is a mobile application designed for tracking issues on GitHub. It provides a convenient interface for users to view, manage, and track issues across various GitHub repositories.

Features

  • Login: Authenticate your GitHub account via OAuth webflow.
  • Issue Tracking: View and manage issues from multiple GitHub repositories.
  • Issue Details: Get detailed information about each issue, including title, description, status, and date opened.
  • Repository Navigation: Easily navigate between repositories and view their issues.
  • Search Functionality: Search for public repositories on GitHub or specific issues within repositories.
  • Dark Mode Support: Seamlessly switch between light and dark themes for comfortable viewing based on device theme.

Screenshots

login

repositories

repositories

issues list

search issues

issues dark

labels

single issue

single issue dark

Installation

Obtain Client ID and Client Secrets

  1. Navigate to the upper right corner of the GitHub Page and click on your avatar.

single issue dark

2. From the drop-down menu navigate to settings.

single issue dark

3. Scroll to developer settings.

single issue dark

4. Click on OAuth Apps.

single issue dark

5. Click on the New OAuth App.

single issue dark

6. Fill out the form.

single issue dark

  1. Under Application Name, enter the name of your application; GiTrack. Under the homepage URL enter the Homepage URL of the app https://gitrack.borisochieng.dev. Under Authorization Callback URL enter the URL that GitHub will use to redirect back to your app; https://gitrack.borisochieng.dev. This can be the same as the Homepage URL.

  2. Finally click on register application.

  3. Copy the Client ID and Client Secret and store them for use in your app safely.

  4. Add the Client Id and Client Secret to the /local.properties file.

client_id=YOUR_CLIENT_ID
client_secret=YOUR_CLIENT_SECRET
  1. Clone the repository to your local machine.
git clone https://github.com/slowburn-404/GiTrack.git
  1. Open the project in Android Studio, build and run on a virtual or real device.

Usage

  • Login: Sign in with your GitHub account to access your repositories and issues.
  • Browse Repositories: Explore your repositories and select one to view its issues.
  • View Issues: Navigate through the list of issues and click on an issue to view its details.
  • Search: Use the search functionality to find specific issues or repositories by title, description, or label.
  • Filter: Filter repositories by most recent, most used, and most starred.

Application architecture overview

OAuth Webflow

  • The application utilizes OAuth web flow authentication instead of device flow to mitigate potential security risks.
  • The app launches a Web intent to the URL https://github.com/login/oauth/authorize.
  • After the user authorizes the application to access their account, they are redirected back to the App with a code using a Deep Link.
  • The app then makes a POST request to the URL https://github.com/login/oauth/access_token with the code to exchange it for an access token. The access token is then used to query the GitHub GraphQL API.

loginRetrofit and OKHttp3: This is used for making asynchronous network calls to facilitate authentication using the webflow.

  • Apollo: GraphQL client used for making asynchronous network calls to the GitHub GraphQL API.
  • Splashscreen: For branding purposes.
  • Kotlin: programming language for writing logic.
  • XML: mark up language for drawing UI elements.
  • Material Design Components: Customizable Material Design UI components
  • Android Architecture Components:
    • Viewmodel; lifecycle aware component.
    • Livedata; lifecycle aware component.
    • Navigation component to handle navigation between fragments and safe arguments Gradle plugin for passing data between fragments.
    • ViewBinding used for binding data to UI elements.
  • About

    View your repositories on GitHub and their issues

    Resources

    License

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Languages