# skylite (pre alpha) an attempt to make a lightweight, easily self-hostable, scoped Bluesky appview (as of 28 aug 2025) currently the state of the project is: ![screenshot of the index server](./docs/assets/indexapistatus.png) ![screenshot of the view server](./docs/assets/viewapistatus.png) this project uses: - live sync systems: [jetstream](https://github.com/bluesky-social/jetstream) and [spacedust](https://spacedust.microcosm.blue/) - backfill: [listRecords](https://docs.bsky.app/docs/api/com-atproto-repo-list-records) and [constellation](https://constellation.microcosm.blue/) - 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/) - frontend: still deno and esbuild and tailwind and react and jsx and typescript (was fun getting these to run on deno) ## Running this project is pre-alpha and not intended for general use yet. you are welcome to experiment if you dont mind errors or breaking changes. the project is split into two, the "Index Server" and the "View Server". despite both living in this repo, they run different http servers with different configs example configuration is in the `config.jsonc.example` file ### Index Server start it by running ```sh deno task index ``` it should just work actually there 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 ### View Server start it by running ```sh deno task view ``` expose your localhost to the web using a tunnel or something and use that url as the custom appview url this 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 ive 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) the view server has extra configurations that you need to understand. the 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 ```js // In order of which skylite index servers or bsky appviews to use first "indexPriority": [ "user#skylite_index", // user resolved skylite index server "did:web:backupindexserver.your.site#skylite_index", // a specific skylite index server "user#bsky_appview", // user resolved bsky appview "did:web:api.bsky.app#bsky_appview" // a specific bsky appview ] ``` id say this project is like uhh ~20% done so not a lot of things you can do with this right now