bluesky appview implementation using microcosm and other services server.reddwarf.app
appview bluesky reddwarf microcosm
Go 99.4%
Other 0.6%
39 1 3

Clone this repository

https://tangled.org/whey.party/red-dwarf-server
git@tangled.org:whey.party/red-dwarf-server

For self-hosted knots, clone URLs may differ based on your setup.

readme.md

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.getProfiles
  • app.bsky.actor.getProfile
  • app.bsky.notification.listNotifications (placeholder)
  • app.bsky.labeler.getServices
  • app.bsky.feed.getFeedGenerators
  • app.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