An Android App that lists the most trending repositories in Android from Github.
- Users can view the most trending repositories in Android from Github.
- Users can filter based on language.
- Users can share repositories they like.
Based on MVVM architecture and Dagger2 with repository pattern.
- A local database that servers as a single source of truth for data presented to the user.
- A web api service.
- A repository that works with the database and the api service, providing a unified data interface.
- A ViewModel that provides data specific for the UI.
- The UI, which shows a visual representation of the data in the ViewModel.
- Unit Test cases for API service, Database, Repository and ViewModel.
- data - contains
- api - contains the api classes to make api calls to FreshlyPressed server, using Retrofit.
- db - contains the db classes to cache network data.
- repository - contains the repository classes, responsible for triggering api requests and saving the response in the database.
- di - contains dependency injection classes, using Dagger2.
- ui - contains classes needed to display Activity.
- util - contains classes needed for activity redirection, ui/ux animations.
- Minimum SDK 16
- Java8 (in master branch)
- MVVM Architecture
- Android Architecture Components (LiveData, Lifecycle, ViewModel, Room Persistence Library, ConstraintLayout)
- RxJava2 for implementing Observable pattern.
- Dagger 2 for dependency injection.
- Retrofit 2 for API integration.
- Gson for serialisation.
- Okhhtp3 for implementing interceptor, logging and mocking web server.
- Mockito for implementing unit test cases
- Picasso for image loading.
Copyright (c) 2016 Cookpad Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.