CatchUp is a free, open source social networking project written in Kotlin and released under Apache-2.0. It has 2,101 GitHub stars, 210 forks and 31 open issues, and was last pushed 2 days ago. On this registry it ranks #18 of 44 tracked projects in Social Networking, with 5 head-to-head comparisons available.

What is CatchUp?

What it is

CatchUp is an open-source Android app written in Kotlin under the Apache-2.0 license. It sits in the Android community and social networking space and gives a short-form view of several services instead of asking users to open many dedicated apps.

The problem it solves is the cost of checking many front pages during the day. CatchUp shows at-a-glance summaries and then deeplinks to a dedicated app when the user wants more. It does not support login, feed customization, or filtering.

Key capabilities

  • CatchUp aggregates front-page content from Hacker News, Reddit, Medium, Product Hunt, Slashdot, Designer News, Dribbble, and GitHub.
  • It supports infinite scrolling on services where that behavior is available.
  • It uses smart deeplinking to move users from summaries into dedicated apps.
  • It provides a simple, consistent interface across services and includes night mode.
  • Its service architecture is described as a Dagger-powered plugin system.
  • It is built with Kotlin, coroutines, AndroidX/Jetpack, SqlDelight, Firebase, Coil, Apollo GraphQL, Okio, OkHttp 3, Retrofit 2, Moshi, Inspector, and KSP.
  • Debug builds include Leak Canary, Scalpel, a debug drawer, and bug reporting.

Who uses it and how

  • Readers can skim several services in one place and jump only to items they want to explore.
  • Users of dedicated apps can treat CatchUp as a discovery surface and a router to those apps.
  • Android developers can study its Kotlin, coroutines, GraphQL, Dagger, and plugin-style service architecture.
  • Contributors can clone and build the project locally, then submit bug fixes or discuss features in issues.
  • Users enabling some services may need to provide API keys, with details in the project wiki.

Getting started

The README says the project can usually be cloned and built locally, with the JDK version defined in libs.versions.toml and Android Studio canaries often required. Some services need API keys, and the wiki lists authentication details.

When to use it — and when not to

CatchUp is useful when someone wants a lightweight front-page overview across several services and is happy to leave deeper reading to dedicated apps. It is a poor fit for users who need login, feed customization, filtering, or full service integration, because the README states those features are not supported. A builder must also manage local Android tooling, canary dependencies, and API keys for some services, while the project itself is described as a testing ground for architecture and library experiments.

project readme (upstream, from github) — read inline

CatchUp

An app for catching up on things.

https://www.zacsweers.dev/catching-up-on-catchup-introduction/

Motivations

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.

Features

  • 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

Technologies

  • Kotlin
  • Kotlin Coroutines
  • Debugging tooling as a first class citizen in the debug build
  • Leak Canary, Scalpel, debug drawer, bug reporting, the works
  • AndroidX/Jetpack
  • Metro
    • One of the more interesting parts of CatchUp is that its service architecture is a Dagger-powered plugin system
  • SqlDelight
  • Firebase
  • Coil
  • Apollo GraphQL
  • Standard Square buffet of Okio/OkHttp 3/Retrofit 2/Moshi
  • Inspector
  • KSP

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.

Testing

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

Influences

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

Development

If you'd like to build CatchUp locally, you should be able to just clone and build with no issues. The project requires whatever JDK version is currently defined libs.versions.toml.

CatchUp tends to keep up with Android Studio canaries, so you may have to use a canary version. Check the AGP version in libs.versions.toml.

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.

License

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

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.

Frequently asked questions

Is CatchUp free to use?

CatchUp is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does CatchUp do?

An app for catching up on things.

What is CatchUp written in?

CatchUp is primarily written in Kotlin. Its source is publicly available at https://github.com/ZacSweers/CatchUp, and it has 2,101 GitHub stars.