# Welcome to FastHub <a href='https://play.google.com/store/apps/details?id=com.fastaccess.github&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' height="80px"/></a> 


![Logo](https://github.com/k0shk0sh/FastHub/blob/master/art/feature_graphic.png?raw=true "Logo")

**FastHub** is yet another **open source** GitHub client app but unlike any other app, FastHub built from ground up.
 
 
 
# Features

- Offline Mode.
- Browse/Search Repos.
- See your repos, private repos and forked ones (badged private & forked to ease differentiate between them).
- Filter branches.
- Filter commits base on branch.
- Watch, Star and Fork Repos.
- Edit Issue or Pull Request if you own the repo.
- Close, Open, Label and Create Issues.
- Close, Open and Label Pull Requests.
- Lock & Unlock conversations on Issues and Pull Requests.
- Milestone & Create milestone.
- Assign assignees to your Issues and Pull Requests.
- Comment on Issues, Pull Requests, Commits and Gists.
- Edit and Delete Comments.
- Create/Delete Gists.
- View Gists and their files.
- Follow and Unfollow users.
- Search Users, Repos, Issues,Pull Requests and Code.
- Download releases and any sort of files.
- Markdown and code highlighting support.
- Receive notifications.
- Mark all notifications as read.
- Loads more...


# FastHub made of:

- Min SDK(21) but Appcompat is used all the way.
- MVP architecture'd (using [ThirtyInch](https://github.com/grandcentrix/ThirtyInch) lib) for the easiness of maintaining and following one structure throughout the project.
- Lambda expressions because __you know why__.
- [RxJava](https://github.com/ReactiveX/RxJava) & [RxAndroid](https://github.com/ReactiveX/RxAndroid) for Retrofit & Background threads.
- [Retrofit](https://github.com/square/retrofit) for consuming rest api.
- [SqliteMagic](https://github.com/SiimKinks/sqlitemagic) for offline mode.
- [Stream API](https://github.com/aNNiMON/Lightweight-Stream-API) for dealing with `ArrayLists`.
- JobScheduler using Firebase JobDispatcher for notifications service.
- [ButterKnife](https://github.com/JakeWharton/butterknife) for views binding.
- [Icepick](https://github.com/frankiesardo/icepick) for saving instance of objects.
- [Lombok](https://projectlombok.github.io) for (getters/setters).
- [Material-BottomNavigation](https://github.com/sephiroth74/Material-BottomNavigation) for `Fragments` navigation.
- [Android-Universal-Image-Loader](https://github.com/nostra13/Android-Universal-Image-Loader) for image loading.
- [MarkDown](https://github.com/zzhoujay/Markdown) for markdown editor highlighting.
- [Toasty](https://github.com/GrenderG/Toasty) for displaying error/success messages.
- [ShapedImageView](https://github.com/gavinliu/ShapedImageView) for avatar images.
- [MatrialTapTargetPrompt](https://github.com/sjwall/MaterialTapTargetPrompt) for displaying guides throughout the app.
- Firebase analytics, crash reporting, ads.
- The almighty Android support libs.

> To download the app from here, please visit the releases page.

# Contribution

You love FastHub? You want new features or bug fixes? Please contribute to the  project either by creating PR or submitting an issue ticket.

[Contribution Guide](CONTRIBUTE.md) 

> **FastHub** contain Ads, but they are disabled by default, you could enable them if you like to support development.

# Copyright Notice

Copyright (C) 2017 Kosh. 

Licensed under the [GPL-3.0](https://github.com/k0shk0sh/FastHub/blob/master/LICENSE)
license (see the LICENSE file).

# Screenshots (old ones, they will be changed soon)

#### Mobile Portrait
![MainScreen](https://github.com/k0shk0sh/FastHub/blob/master/art/mobile_main.png?raw=true "MainScreen")

#### Mobile Landscape
![MainScreenLandscape](https://github.com/k0shk0sh/FastHub/blob/master/art/mobile_main_landscape.png?raw=true "MainScreenLandscape")

#### Tablet-Repo 
![MainScreenRepo](https://github.com/k0shk0sh/FastHub/blob/master/art/tablet_repo.png?raw=true "MainScreen")

#### Tablet-Commit

![MainScreenCommit](https://github.com/k0shk0sh/FastHub/blob/master/art/tablet_commits.png?raw=true "MainScreenCommit")


