Skip to content
An app for catching up on things.
Kotlin Java Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Build on jdk 8 and 11 (#204) Nov 26, 2019
app Build on jdk 8 and 11 (#204) Nov 26, 2019
art CI setups and spotless integration (#148) May 18, 2019
buildSrc AGP 4a5 Dec 6, 2019
gradle Try just using **/src/ Nov 17, 2019
libraries Build on jdk 8 and 11 (#204) Nov 26, 2019
scripts Fix missing emojis in about screen + revamp implementation (#176) Aug 17, 2019
service-api Switch to Coil for image loading (#184) Sep 16, 2019
service-registry Switch to kotlinx-metadata Sep 14, 2019
services Build on jdk 8 and 11 (#204) Nov 26, 2019
signing Add play store uploads and some proguard/release build fixes Oct 17, 2017
spotless Fix copyright header copypastas Oct 30, 2019
.gitignore Add play store uploads and some proguard/release build fixes Oct 17, 2017 Add shuffle button to order services (#111) Oct 28, 2018 CI setups and spotless integration (#148) May 18, 2019
LICENSE.txt License Apr 24, 2017 Remove stetho, move entirely to Flipper (#188) Sep 17, 2019
build.gradle.kts Run spotless on root Nov 17, 2019 Revamp script using tivi inspiration Nov 17, 2019 Clean up shell script bits a little Nov 16, 2019 Remove stetho, move entirely to Flipper (#188) Sep 17, 2019
gradlew Update gradle, apollo, kotlinpoet, coroutines, publisher, FB Nov 2, 2019
gradlew.bat Gradle 5.5 Jun 30, 2019
settings.gradle.kts Update all the things. Gradle 6, Kotlin 1.3.6 EAPs Oct 22, 2019


An app for catching up on things.


There's a lot of services I like reading up on throughout the day. Most of these services have dedicated apps for consuming them, but often times I just want to skim the front page and only deep dive occasionally. Enter CatchUp: a high level presentation of the "front page" of several services in short form, and intelligent deeplinking into dedicated apps if you want to go further.

CatchUp is not an all-purpose client for each of these services, just the concierge for at-a-glance details and router for getting on your way. It does not support login for any service, it does not support customization/filtering of their feed. CatchUp is dumb, and you should use one of the many great dedicated apps for this if you want more integration features.

CatchUp is also very much a testing ground for things I personally dive into, from architecture, libraries, patterns, API quirks, and more. It's been a very fun project to spike test new things.


  • Multiple services
  • Hacker News
  • Reddit
  • Medium
  • Product Hunt
  • Slashdot
  • Designer News
  • Dribbble
  • GitHub
  • Infinite scrolling on supported services
  • Pleasant, simple, consistent UI for across services
  • Night mode
  • Smart deeplinking into dedicated apps


  • Kotlin
  • RxJava 2/AutoDispose
  • Debugging tooling as a first class citizen in the debug build
  • Leak Canary, Chuck, Scalpel, debug drawer, Flipper, bug reporting, the works
  • AndroidX/Jetpack
  • Dagger 2
  • One of the more interesting parts of CatchUp is that its service architecture is a Dagger-powered plugin system
  • Room (Arch components)
  • AutoValue + extensions
  • Firebase
  • Coil
  • Apollo GraphQL
  • Standard Square buffet of Okio/OkHttp 3/Retrofit 2/Moshi
  • ThreetenABP
  • Inspector

There's a lot of neat/interesting little tidbits in the CatchUp source code that I plan to write a mini blog series about. Each service has its own nuances that make them unique to work with in code.


While this is a personal pet project, extensive tests can be found here.


This app owes a lot of its inspiration, implementation details, and general inner workings to the work of others. Particularly:


CatchUp is in open alpha, but master tends to be rather far ahead of what's on the Play Store.

Get it on Google Play


If you'd like to build CatchUp locally, you should be able to just clone and build with no issues.

CatchUp tends to keep up with Android Studio canaries, so you may have to use a canary version. Check the Android Gradle Plugin dependency in gradle/dependencies.kt.

If you want to build with working services, some require API keys. See the wiki for more details on which services require keys.

Bug fixes are always welcome. Tests are too if you're into that kinda thing, but I'm not actively trying to make this project a shining icon of TDD. For new features or otherwise significant work, please discuss in an issue first.

For apollo-android's code generation: if you want to use a local installation of the apollo-codegen node module you'll need to make sure 0.19. is installed and linked (npm install -g apollo-codegen@0.19.1). Otherwise, the gradle plugin should gracefully fallback to downloading it on demand.


Copyright (C) 2017 Zac Sweers

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

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.
You can’t perform that action at this time.