/ibuqa-screening

Mobile App that tracks Github Issues [ibuQA Interview Solution], for the Android Engineer Role

Primary LanguageKotlinMIT LicenseMIT

IBUQA interview solution

Introduction

Get the app

while on your Android mobile, use this link to get the latest App version ➡️ The APP

Final look

Prerequisites

Before running this app, you need to add your Github Personal Access Token, in your local.properties file:

GITHUB_ACCESS_TOKEN="xxxx-xxxx-xxx"

Background

Build an application that makes use of Github APIs to do a number of things:

  • Search for a user repository on Github and display its details which is the issues count, who wrote them, are there comments, state of issue, and timeframe
  • be able to showcase in a user friendly manner no complications in design just call the api and filter some logic needed

Tech-stack

  • Tech-stack
    • Kotlin - a cross-platform, statically typed, general-purpose programming language with type inference.
    • Coroutines - perform background operations.
    • Flow - handle the stream of data asynchronously that executes sequentially.
    • Apollo GraphQL Client - Apollo is a platform for building a data graph.
    • Hilt - Dagger - a pragmatic lightweight dependency injection framework.
    • Material-3 - aid personalization features like dynamic color, and is designed to be cohesive with the new visual style and system UI on Android 12 and above.
    • Jetpack
      • LiveData - is an observable data holder.
      • Lifecycle - perform action when lifecycle state changes.
      • ViewModel - store and manage UI-related data in a lifecycle conscious way.

Architecture

  • MVVM - Model View View Model
  • Plugins
    • Graphql - provides GraphQL language support to all JetBrains IDEs

UI and Unit Tests

can be done

License

MIT License

Copyright (c) 2024 Mohamed ibrahim

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.