This repository contains an aggressively-simplified Go implementation of the ATProtocol statusphere sample app.
It differs from indigo-based ATProtocol applications in several ways:
- Authentication is handled by the IO proxy. This moves all OAuth signin-handling, request signing, retry, and request routing out of the app, greatly simplifying the application.
- Instead of consuming the firehose, the app uses Jetstream to watch for new updates. This dramatically reduces bandwidth requirements and eliminates the need for CBOR and ugly circular dependencies in Lexicon code generation.
- The generated lexicon code is produced by slink, a fresh XRPC code generator that omits CBOR overhead, flattens the package space, produces type-safe unions, and, when run with a list of Lexicon IDs, generates only the code needed to use those methods and records.
For demonstration purposes, generated code is checked into this repo, but that's neither necessary nor recommended. See the xrpc make target for an easy way to regenerate xrpc handlers at build time.