Red Dwarf Server#
Red Dwarf but as a Go AppView server instead of a React TypeScript SPA
you can use it right now by using did:web:server.reddwarf.app with any bluesky client that supports custom appviews (like for example witchsky)
still very early in development
implemented routes:
app.bsky.actor.getProfilesapp.bsky.actor.getProfileapp.bsky.notification.listNotifications(placeholder)app.bsky.labeler.getServicesapp.bsky.feed.getFeedGeneratorsapp.bsky.feed.getPosts(post rendering is incomplete)app.bsky.feed.getFeed(post rendering is incomplete)app.bsky.unspecced.getConfig(placeholder)app.bsky.unspecced.getPostThreadV2(mostly working! doesnt use prefered sort, not performant yet)
NOTE
uh im not very confident with the current directory structure, so files and folders might move around
Runnables#
run all of these using go run . inside the respective directories
/cmd/appview#
the main entry point, the actual appview itself. the api server that implements app.bsky.* XRPC methods
/cmd/backstream#
experimental backfiller that kinda (but not really) conforms to the jetstream event shape. designed to be ingested by consumers expecting jetstream
/cmd/aturilist#
experimental listRecords replacement. is not backfilled. uses the official jetstream go client, which means it suffers from this bug
Packages#
/auth#
taken from go-bsky-feed-generator but modified a bit.
handles all of the auth, modified to have a more lenient version to make getFeed work
/microcosm/*#
microcosm api clients, implements constellation slingshot and spacedust
slingshot's api client is compatible with github.com/bluesky-social/indigo/* stuff, like agnostic.RepoGetRecord and util.LexClient
/shims/*#
most of Red Dwarf Server logic lives here. pulls data from upstream services like microcosm constellation and slingshot, transforms it, and spits out bsky api -like responses using the published app.bsky.* codegen from github.com/bluesky-social/indigo/api/bsky
/sticket#
unused leftover sorry
/store#
unused leftover sorry
todo#
- clean up /cmd/appview/main.go , its a mess
- appview-side query caches
- notification service
- bookmarks service
- create aturilist service
- make backstream usable
- create jetrelay service