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
7
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