···11-# (wip)(not done)(pre alpha) skylite (temporary name probably)(test thing)
22-an attempt to make a lightweight, easily self-hostable, scoped appview (kinda like fedi instances, so that means users need to register to an instance to have the content they should see be indexed) using:
33-- live sync systems:
44- - [jetstream](https://github.com/bluesky-social/jetstream)
55- - [spacedust](https://spacedust.microcosm.blue/)
66-- backfill:
77- - [listRecords](https://docs.bsky.app/docs/api/com-atproto-repo-list-records)
88- - [constellation](https://constellation.microcosm.blue/)
99-- the server stuff:
1010- - [sqlite](https://jsr.io/@db/sqlite)
1111- - the usage of [typescript](https://www.npmjs.com/package/@atproto/lex-cli)
1212- - [deno](https://deno.com/)
11+# skylite (pre alpha)
22+an attempt to make a lightweight, easily self-hostable, scoped appview
1331414-this uses XRPC server tooling and codegen so the repo is kinda large despite not being functional at all
44+this project uses:
55+- live sync systems: [jetstream](https://github.com/bluesky-social/jetstream) and [spacedust](https://spacedust.microcosm.blue/)
66+- backfill: [listRecords](https://docs.bsky.app/docs/api/com-atproto-repo-list-records) and [constellation](https://constellation.microcosm.blue/)
77+- the 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/)
15899+## Status
1010+(as of 25 aug 2025)
1611currently the state of the project is:
1717-- db:
1818- - is not ready but ive started working on it
1919- - db schema is kinda there but still iffy on the insertion (kysely with better-sqlite3 or just use raw sql queries with deno jsr:@db/sqlite ?) (or maybe should it not use sqlite at all?)
2020-- indexing:
2121- - the meta framework of the parsing incoming data is kinda done (good enough for MVP but i would like more indexing provenance)
2222- - but the actual logic for index handling to the db is not done
2323-- registration:
2424- - user registration is not there yet, the wrapper around listRecords exists though (for onboarding/backfill)
2525-- XRPC Server:
2626- - setup is done, just need to actually implement all 80+ routes
2727- - got auth working recently but havent hooked up the validator to the xrpc method/route handler so it can access who requested it
1212+### Index Server
1313+- Database:
1414+ - Works, though it still needs some more tuning and iteration
1515+- Registration:
1616+ - not there yet. currently manually adding users
1717+ - onboarding backfill is probably next maybe
1818+- Indexing:
1919+ - Jetstream:
2020+ - its there, i just need to actually handle each and every record type and insert it to the db (like currently 2 out of 12 or so record collections are being inserted into the db)
2121+ - Spacedust:
2222+ - its a backlink index so i only needed one table, and so it is complete
2323+- Server:
2424+ - Initial implementation is done
2525+ - uses per-user instantiaion thing so it can add or remove users as needed
2626+ - pagination is not a thing yet \:\(
2727+ - does not implement the Ref / Partial routes yet (currently strips undefineds) (fixing this soon)
2828+ - also implements the entirety of the Constellation API routes as a bonus (under `/links/`)
2929+- Lexicon:
3030+ - unsure about PostViewRef's optional fields
3131+ - theres 3 remaining profile-related routes thats still not defined yet
3232+ - some routes need more tweaks
3333+ - considering adding optional query params to request either skeleton only, partials, or full hydrated (might not be respected by the server though lol)
3434+ - considering making all of the api routes custom instead of the current situation of having some of the Index server routes be the original unmodified bsky.app routes
28353636+### View Server
3737+- pratically unimplemented
3838+- currently mostly just proxies api.bsky.app
3939+- i havent split the DB between the Index server and View server yet
4040+- hydration (resolving `Ref`s, handling partials) will be implemented soon i think
4141+- it should (but not yet) have a ranking system to decide which index server to be prioritized if multiple index servers indexes the same user account. (and also should support both api sets (Bluesky AppView API (legacy/fallback) and Bluesky Index Server API ))
29423030-there is still a lot of design work i havent done regarding stuff like:
3131-- moderation
3232-- indexing provenance
3333-- registration/unregistration APIs
3434-- cross instance backfills/viewing
3535-- also im pretty sure im not listening to all of the app.bsky.* records that i should be listening to but i havent re checked it even though i already imported the entire lexicon directory from the bsky atproto git repo but i just havent checked yet
3636-- and more
4343+## Running
4444+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.
4545+4646+the project is split into two, the "Index Server" and the "View Server".
4747+these currently run in a single process and share the same HTTP server and port.
4848+4949+configuration is in the `.env` file
5050+5151+expose your localhost to the web using a tunnel or something and use that url as the custom appview url
5252+5353+this should work on any bluesky client that supports changing the appview URL (im using an unreleased custom fork for development)
37543838-still very early
3939-this does not run on any bsky clients yet
4040-practically none of the api routes have been implemented yet5555+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
5656+5757+id say this project is like uhh ~20% done so not a lot of things you can do with this right now