Code Monkey home page Code Monkey logo

github-search-app's Introduction

GitHub Profile Search App

Overview

This Android application allows users to search for GitHub profiles and view repositories associated with those profiles. The app is developed using Kotlin and follows best practices for network calls, data modeling, caching, and UI implementation.

Features

  1. Fetch Repositories:

    • Utilizes the GitHub API to fetch repositories for a given GitHub user.
    • Network calls are handled using Retrofit and OkHttp.
  2. Data Model:

    • Defines a data class GHRepo with the following properties:
      • id (mapped to id)
      • name (mapped to name)
      • repoURL (mapped to html_url)
  3. NetworkService:

    • Implements a NetworkService class for API requests.
    • Handles errors and success responses effectively.
  4. Caching:

    • Utilizes a Cacher class to cache network responses.
    • Implements caching logic using Room database for local data storage.
  5. UI Implementation:

    • Displays a list of repositories using RecyclerView.
    • Implements the ViewHolder pattern with a label for repository details.
    • Allows clicking on an item to open the repository URL in a WebView.
    • Implements local search functionality based on id or name.
    • Ensures proper cell reuse in RecyclerView.
  6. Additional Considerations:

    • Follows good coding practices, clear naming conventions, and modularization.
    • Ensures graceful handling of network failures.
    • Prioritizes app performance in terms of RAM and CPU utilization.
    • Completeness of the app is a key focus.

Technologies

  1. Kotlin:

    • Developed using Kotlin.
    • Follows best practices for Kotlin development.
    • Uses coroutines for asynchronous programming.
    • Uses Kotlin extensions for concise code.
    • Uses Kotlin Android Extensions for view binding.
    • Uses Kotlin Gradle DSL for build management.
  2. Android Jetpack:

    • Uses Android Jetpack components.
    • Follows best practices for Android development.
    • Uses Room for local data storage.
    • Uses LiveData for data observation.
    • Uses ViewModel for UI data handling.
    • Uses Data Binding for UI implementation.
    • Uses Navigation for fragment navigation.
    • Uses RecyclerView for displaying a list of repositories.
    • Uses WebView for displaying repository details.
    • Uses SearchView for local search functionality.
    • Uses Retrofit and OkHttp for network calls.
    • Uses Glide for image loading.
    • Uses Gradle for build management.
    • Uses Git for version control.
  3. GitHub API:

    • Uses the GitHub API for fetching repositories.

How to Use

  1. Clone the repository to your local machine.
  2. Open the project in Android Studio.
  3. Build and run the app on an Android emulator or device.

Dependencies

  • Retrofit
  • OkHttp
  • Room

Contributing

  1. Fork the repository.
  2. Create a new branch for your feature.
  3. Make your changes and submit a pull request.

License

This project is licensed under the MIT License.

Acknowledgments

  • Thanks to the GitHub API for providing the data used in this app.

github-search-app's People

Contributors

samir-sayyed1 avatar

Stargazers

Devpreyo Roy avatar

Watchers

samir avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.