Giter Club home page Giter Club logo

java-githubtrends's Introduction

TrendingRepo :

  • Created a Java based android application lists the most trending repositories that fetches data from GitHub repo API.



Features

  • Home Screen
    • We have made user friendly design of home screen.
    • We have made attractive navigation tab bar at the top of the page.
      • Trending repo list screen.
        • Users can search their favourite technology GitHub repository list by clicking/ taping on technology name according to that list will be displayed
        • Users can filter-out the list according to repository name along with the short description , with the help of such kind of details user can get idea bout the repo easily.
        • User can share the repo with the help of SHARE button.
  • Detail Screen
    • We have made user friendly design of repository details screen.
    • We have made attractive details page with the below details.
      • Repo Details screen
        • Users can get the particular repo will give the details like name the stars, watchers, forks.
        • Users can share repositories they like with the help of SHARE button.
        • User can visit the repo details page with the help of VISIT SITE in browser.

App Architecture :

Based on mvvm architecture and repository pattern.

We have follow MVVM architecture in this project because of it treats Activity's classes and XML files as views, and ViewModel classes are where we write our business logic. & it completely separates an app's UI from its logic.

  • Model: This holds the data of the application. It cannot directly talk to the View. Generally, it’s recommended to expose the data to the ViewModel through Observables.

  • View: It represents the UI of the application devoid of any Application Logic. It observes the ViewModel.

  • ViewModel: It acts as a link between the Model and the View. It’s responsible for transforming the data from the Model. It provides data streams to the View. It also uses hooks or callbacks to update the View. It’ll ask for the data from the Model.

  • ViewModelProviders.of : we have used to create ViewModel instance 

  • Live Data : It's act as observable data holder like communicator between view and model , and also we can update easily the UI from the ViewModel , therefore we have used provides public methods setValue() and getValue().

Tech components :

  • Room Persistence Library : A local database that servers as a single source of truth for data presented to the user.

  • MVVM architecture : It’s pattern provides an easy way to structure the project codes. The reason why MVVM is widely accepted is that it provides modularity, testability, and a more clean and maintainable codebase.

  • Live Data : LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services. 

  • ViewModel : For implementing class that is responsible for preparing and managing the data for an Activity or a Fragment 

  • Lifecycle : For implementing helps developers understand which states activities go through when a user navigates through an app

  • RxJava2 : For implementing Observable pattern.

  • Mokito : For implementing Unit Test cases for API service, Database, Repository and ViewModel.

  • Dagger2 : For implementing dependency injection.

  • Retrofit2 : For implementing API integration & fetch the data easily from the source.

  • Okhttp3 : For implementing interceptor, logging and mocking web server.

  • Picasso : For implementing image loading from the source API.

  • Gson : For implementing for JSON data serialisation.

Package Structure

com.radixweb.trendingrepo

 ├── src
    │   ├── androidTest
    │   │   ├── db
    │   │   ├── repository
    │   │   ├── util
    │   ├── main
    │   │   ├── assets
    │   │   │   ├── fonts
    │   │   ├── java
    │   │   │   ├── data
    │   │   │   │   ├── local
    │   │   │   │   │   ├── converter
    │   │   │   │   │   ├── dao
    │   │   │   │   │   ├── entity
    │   │   │   │   ├── remote
    │   │   │   │   │   ├── api
    │   │   │   │   │   ├── interceptor
    │   │   │   │   │   ├── model
    │   │   │   │   ├── repository
    │   │   │   ├── di
    │   │   │   │   ├── component
    │   │   │   │   ├── module
    │   │   │   ├── factory
    │   │   │   ├── ui
    │   │   │   │   ├── activity
    │   │   │   │   ├── adapter
    │   │   │   │   ├── custom
    │   │   │   │   ├── viewmodel
    │   │   │   ├── utils
    │   │   ├── res
    │   │   │   ├── anim
    │   │   │   ├── drawable
    │   │   │   ├── layout
    │   │   │   ├── menu
    │   │   │   ├── values
    │   │   │   │   ├── menu
    │   │   ├── resources
    │   │   │   ├── api-response
    │   │   ├── AndroidManifest.xml
    │   ├── test
    │   │   ├── api

java-githubtrends's People

Contributors

flutterdev-vinit avatar keyurm2505 avatar

Forkers

prakrutijoshi

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.