explaingit

k0shk0sh/fasthub

5,738JavaAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

FastHub is a full-featured open-source Android app for GitHub that lets you browse repos, manage issues and pull requests, review code, commit file changes, and handle multiple accounts, all from your phone.

Mindmap

mindmap
  root((FastHub))
    Features
      Issues and PRs
      Code review
      File editing
      Notifications
    Extras
      Multiple accounts
      Enterprise GitHub
      Offline mode
      Syntax highlighting
    Tech stack
      Java and Kotlin
      Retrofit network
      RxJava async
      Requery storage
    Platform
      Android app
      GPL v3 license
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Browse GitHub repositories, read and write issues, and review pull requests from an Android device.

USE CASE 2

Manage multiple GitHub accounts including enterprise GitHub from a single Android app.

USE CASE 3

Create, edit, and commit file changes to a GitHub repository directly from your phone without a desktop.

USE CASE 4

Follow trending repositories and manage all notifications with one-tap mark-all-read.

Tech stack

JavaKotlinAndroidRetrofitRxJavaRequeryGlide

Getting it running

Difficulty · moderate Time to first run · 30min

Building requires Android Studio and a GitHub OAuth App client ID and secret for authentication.

GPL v3, you can use and modify it freely, but any version you distribute must also be open-source under GPL.

In plain English

FastHub is an open-source Android app for browsing and using GitHub on a phone. It was built from scratch rather than adapting GitHub's official interface, and it aims to give users a full-featured GitHub experience from a mobile device. The app was available on Google Play and as a direct APK download, and it is licensed under GPL v3. The app covers most of what you would do on GitHub from a desktop: browsing repositories, reading and writing issues and pull requests, commenting, applying reactions, merging pull requests, reviewing pull request changes, managing milestones and labels, viewing commit histories, working with Gists, and following other users. There is also support for organizations, team management, and trending repositories. A notification overview lets you mark everything as read in one tap. Some features go beyond what a basic GitHub client would offer. The app supports multiple accounts and enterprise GitHub accounts. It has an offline mode so previously loaded content remains accessible without a connection. Markdown and code are rendered with syntax highlighting. Themes can be changed within the app. Files inside a repository can be created, edited, and deleted directly from the app, committing changes without a desktop. The app is written primarily in Java, with newer modules written in Kotlin. It uses the MVP architectural pattern and relies on several well-known Android libraries: Retrofit for network calls, RxJava for handling asynchronous work, Requery for offline storage, and Glide for loading images. Lottie handles animations. At the time of the README, the project was undergoing a large refactor toward a version 5. Contributions were welcome through pull requests and issues, and community members had translated the app into over a dozen languages including Chinese, German, Japanese, Russian, and Spanish.

Copy-paste prompts

Prompt 1
I want to fork FastHub and add a feature to filter issues by label on mobile, where in the Java or Kotlin codebase should I start?
Prompt 2
How does FastHub implement offline mode with Requery for GitHub content? Walk me through the data caching flow.
Prompt 3
I'm building a GitHub client for Android. How does FastHub handle OAuth token authentication with the GitHub API?
Prompt 4
Help me add a new dark theme to FastHub by finding and modifying the theme configuration files.
Open on GitHub → Explain another repo

← k0shk0sh on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.