My Appview#
This is a small(ish) appview meant for a single user (me or you) that can be spun up at any time and used as a basic appview to see Bluesky posts for users that single user follows.
In April 2026 Bluesky had an outage which caused the appview to be unavailable, which those that used the appview could not use Bluesky the app. Workarounds included switching to a different appview (such as Blacksky) or using a different client that used a different appview (such as Blacksky or Red Dwarf).
This appview intends to be one of those different appviews that can be used in case of an outage.
When the appview first starts it will look for the user that the appview is intended for and get a list of that users follows. It will then attempt to backfill and index all of those follow users posts and then keep track and index live posts as they happen.
If the user follows or unfollows a user, that will be reflected in the appviews index.
It is not (at the moment) supposed to be a complex appview, just a way for a user to still view the Bluesky network for the users they follow.
Todo#
- - Configure Tap
- Run as part of a docker-compose file
- Configure to be in
Dynamically Configuredmode - Configure the filters to be for
app.bsky.*(maybe limit this just to be the ones needed)
- - App start up configuration for user
- Get users did from config
- Fetch and store that users follows
- For each user call the
/repos/addendpoint on tap to add the follow to be tracked - Call
/repos/addfor the user of the appview
- - Handle the events for tracked users
- Ignore anything other than the post lexicon types for the follows (work out what lexicon types need to be used for the user using the appview)
- Ignore if older than x amount of days (configurable number of days) - appview doesn't really need full history, only fairly recent and live
- Store and index the data in sqlite (schema TBD)
- If it's a repost, store the subject too
- If it's a reply store the parent and root
- If it's a quote store the post that's quoted
- - Start to implement the endpoints required to make this an appview (looking at a similar project konbini by @why.bsky.team)
-
GET /.well-known/did.json -
GET /xrpc/com.atproto.identity.resolveHandle -
GET /xrpc/com.atproto.repo.getRecord -
GET /xrpc/app.bsky.actor.getProfile -
GET /xrpc/app.bsky.actor.getProfiles -
GET /xrpc/app.bsky.actor.getPreferences -
POST /xrpc/app.bsky.actor.putPreferences -
GET /xrpcapp.bsky.actor.searchActors -
GET /xrpc/app.bsky.actor.searchActorsTypeahead -
GET /xrpc/app.bsky.feed.getTimeline -
GET /xrpc/app.bsky.feed.getAuthorFeed -
GET /xrpc/app.bsky.feed.getPostThread -
GET /xrpc/app.bsky.feed.getPosts -
GET /xrpc/app.bsky.feed.getLikes -
GET /xrpc/app.bsky.feed.getRepostedBy -
GET /xrpc/app.bsky.feed.getActorLikes -
GET /xrpc/app.bsky.feed.getFeed -
GET /xrpc/app.bsky.feed.getFeedGenerator -
GET /xrpc/app.bsky.graph.getFollows -
GET /xrpc/app.bsky.graph.getFollowers -
GET /xrpc/app.bsky.graph.getBlocks -
GET /xrpc/app.bsky.graph.getMutes -
GET /xrpc/app.bsky.graph.getRelationships -
GET /xrpc/app.bsky.graph.getLists -
GET /xrpc/app.bsky.graph.getList -
GET /xrpc/app.bsky.notification.listNotifications -
GET /xrpc/app.bsky.notification.getUnreadCount -
POST /xrpc/app.bsky.notification.updateSeen -
GET /xrpc/app.bsky.labeler.getServices -
GET /xrpc/app.bsky.unspecced.getConfig -
GET /xrpc/app.bsky.unspecced.getTrendingTopics -
GET /xrpcapp.bsky.unspecced.getPostThreadV2
-