an attempt to make a lightweight, easily self-hostable, scoped bluesky appview
1# skylite (pre alpha) 2an attempt to make a lightweight, easily self-hostable, scoped Bluesky appview 3 4(as of 28 aug 2025) 5currently the state of the project is: 6![screenshot of the index server](./docs/assets/indexapistatus.png) 7![screenshot of the view server](./docs/assets/viewapistatus.png) 8 9this project uses: 10- live sync systems: [jetstream](https://github.com/bluesky-social/jetstream) and [spacedust](https://spacedust.microcosm.blue/) 11- backfill: [listRecords](https://docs.bsky.app/docs/api/com-atproto-repo-list-records) and [constellation](https://constellation.microcosm.blue/) 12- the backend server stuff: [sqlite](https://jsr.io/@db/sqlite) db, typescript with [codegen](https://www.npmjs.com/package/@atproto/lex-cli), and [deno](https://deno.com/) 13- frontend: still deno and esbuild and tailwind and react and jsx and typescript (was fun getting these to run on deno) 14 15## Running 16this project is pre-alpha and not intended for general use yet. you are welcome to experiment if you dont mind errors or breaking changes. 17 18the project is split into two, the "Index Server" and the "View Server". 19despite both living in this repo, they run different http servers with different configs 20 21example configuration is in the `config.jsonc.example` file 22 23### Index Server 24start it by running 25```sh 26deno task index 27``` 28it should just work actually 29 30there is no way to register users to be indexed by the server yet (either Index nor View servers) so you can just manually add your account to the `system.db` file for now 31 32### View Server 33start it by running 34```sh 35deno task view 36``` 37expose your localhost to the web using a tunnel or something and use that url as the custom appview url 38 39this should work on any bluesky client that supports changing the appview URL (im using an unreleased custom fork for development) as the view server implements the `#bsky_appview` routes for compatibility with existing clients 40 41ive got a custom `social-app` fork here [https://github.com/rimar1337/social-app/tree/publicappview-colorable](https://github.com/rimar1337/social-app/tree/publicappview-colorable) 42 43the view server has extra configurations that you need to understand. 44the view server hydrates content by calling other servers (either an `#skylite_index` or `#bsky_appview`) and so you need to write the order of which servers are prioritized first for resolving the hydration endpoints 45```js 46// In order of which skylite index servers or bsky appviews to use first 47"indexPriority": [ 48 "user#skylite_index", // user resolved skylite index server 49 "did:web:backupindexserver.your.site#skylite_index", // a specific skylite index server 50 "user#bsky_appview", // user resolved bsky appview 51 "did:web:api.bsky.app#bsky_appview" // a specific bsky appview 52] 53``` 54 55id say this project is like uhh ~20% done so not a lot of things you can do with this right now