A personal app view to see Bsky posts of your followers (for when their app view goes down)
17
fork

Configure Feed

Select the types of activity you want to include in your feed.

at tap 65 lines 3.9 kB view raw view rendered
1## My Appview 2 3This 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. 4 5In 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). 6 7This appview intends to be one of those different appviews that can be used in case of an outage. 8 9When 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. 10 11If the user follows or unfollows a user, that will be reflected in the appviews index. 12 13It 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. 14 15### Todo 16 17- [x] - Configure Tap 18 - [x] Run as part of a docker-compose file 19 - [x] Configure to be in `Dynamically Configured` mode 20 - [x] Configure the filters to be for `app.bsky.*` (maybe limit this just to be the ones needed) 21- [x] - App start up configuration for user 22 - [x] Get users did from config 23 - [x] Fetch and store that users follows 24 - [x] For each user call the `/repos/add` endpoint on tap to add the follow to be tracked 25 - [x] Call `/repos/add` for the user of the appview 26- [ ] - Handle the events for tracked users 27 - [x] 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) 28 - [ ] Ignore if older than x amount of days (configurable number of days) - appview doesn't really need full history, only fairly recent and live 29 - [x] Store and index the data in sqlite (schema TBD) 30 - [x] If it's a repost, store the subject too 31 - [ ] If it's a reply store the parent and root 32 - [ ] If it's a quote store the post that's quoted 33- [ ] - Start to implement the endpoints required to make this an appview (looking at a [similar project konbini](https://tangled.org/why.bsky.team/konbini/) by [@why.bsky.team](https://bsky.app/profile/why.bsky.team)) 34 - [x] `GET /.well-known/did.json` 35 - [ ] `GET /xrpc/com.atproto.identity.resolveHandle` 36 - [ ] `GET /xrpc/com.atproto.repo.getRecord` 37 - [ ] `GET /xrpc/app.bsky.actor.getProfile` 38 - [ ] `GET /xrpc/app.bsky.actor.getProfiles` 39 - [ ] `GET /xrpc/app.bsky.actor.getPreferences` 40 - [ ] `POST /xrpc/app.bsky.actor.putPreferences` 41 - [ ] `GET /xrpcapp.bsky.actor.searchActors` 42 - [ ] `GET /xrpc/app.bsky.actor.searchActorsTypeahead` 43 - [ ] `GET /xrpc/app.bsky.feed.getTimeline` 44 - [ ] `GET /xrpc/app.bsky.feed.getAuthorFeed` 45 - [ ] `GET /xrpc/app.bsky.feed.getPostThread` 46 - [ ] `GET /xrpc/app.bsky.feed.getPosts` 47 - [ ] `GET /xrpc/app.bsky.feed.getLikes` 48 - [ ] `GET /xrpc/app.bsky.feed.getRepostedBy` 49 - [ ] `GET /xrpc/app.bsky.feed.getActorLikes` 50 - [ ] `GET /xrpc/app.bsky.feed.getFeed` 51 - [ ] `GET /xrpc/app.bsky.feed.getFeedGenerator` 52 - [ ] `GET /xrpc/app.bsky.graph.getFollows` 53 - [ ] `GET /xrpc/app.bsky.graph.getFollowers` 54 - [ ] `GET /xrpc/app.bsky.graph.getBlocks` 55 - [ ] `GET /xrpc/app.bsky.graph.getMutes` 56 - [ ] `GET /xrpc/app.bsky.graph.getRelationships` 57 - [ ] `GET /xrpc/app.bsky.graph.getLists` 58 - [ ] `GET /xrpc/app.bsky.graph.getList` 59 - [ ] `GET /xrpc/app.bsky.notification.listNotifications` 60 - [ ] `GET /xrpc/app.bsky.notification.getUnreadCount` 61 - [ ] `POST /xrpc/app.bsky.notification.updateSeen` 62 - [ ] `GET /xrpc/app.bsky.labeler.getServices` 63 - [ ] `GET /xrpc/app.bsky.unspecced.getConfig` 64 - [ ] `GET /xrpc/app.bsky.unspecced.getTrendingTopics` 65 - [ ] `GET /xrpcapp.bsky.unspecced.getPostThreadV2`