+51
-34
readme.md
+51
-34
readme.md
···
1
-
# (wip)(not done)(pre alpha) skylite (temporary name probably)(test thing)
2
-
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:
3
-
- live sync systems:
4
-
- [jetstream](https://github.com/bluesky-social/jetstream)
5
-
- [spacedust](https://spacedust.microcosm.blue/)
6
-
- backfill:
7
-
- [listRecords](https://docs.bsky.app/docs/api/com-atproto-repo-list-records)
8
-
- [constellation](https://constellation.microcosm.blue/)
9
-
- the server stuff:
10
-
- [sqlite](https://jsr.io/@db/sqlite)
11
-
- the usage of [typescript](https://www.npmjs.com/package/@atproto/lex-cli)
12
-
- [deno](https://deno.com/)
1
+
# skylite (pre alpha)
2
+
an attempt to make a lightweight, easily self-hostable, scoped appview
13
3
14
-
this uses XRPC server tooling and codegen so the repo is kinda large despite not being functional at all
4
+
this project uses:
5
+
- live sync systems: [jetstream](https://github.com/bluesky-social/jetstream) and [spacedust](https://spacedust.microcosm.blue/)
6
+
- backfill: [listRecords](https://docs.bsky.app/docs/api/com-atproto-repo-list-records) and [constellation](https://constellation.microcosm.blue/)
7
+
- 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/)
15
8
9
+
## Status
10
+
(as of 25 aug 2025)
16
11
currently the state of the project is:
17
-
- db:
18
-
- is not ready but ive started working on it
19
-
- 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?)
20
-
- indexing:
21
-
- the meta framework of the parsing incoming data is kinda done (good enough for MVP but i would like more indexing provenance)
22
-
- but the actual logic for index handling to the db is not done
23
-
- registration:
24
-
- user registration is not there yet, the wrapper around listRecords exists though (for onboarding/backfill)
25
-
- XRPC Server:
26
-
- setup is done, just need to actually implement all 80+ routes
27
-
- got auth working recently but havent hooked up the validator to the xrpc method/route handler so it can access who requested it
12
+
### Index Server
13
+
- Database:
14
+
- Works, though it still needs some more tuning and iteration
15
+
- Registration:
16
+
- not there yet. currently manually adding users
17
+
- onboarding backfill is probably next maybe
18
+
- Indexing:
19
+
- Jetstream:
20
+
- 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)
21
+
- Spacedust:
22
+
- its a backlink index so i only needed one table, and so it is complete
23
+
- Server:
24
+
- Initial implementation is done
25
+
- uses per-user instantiaion thing so it can add or remove users as needed
26
+
- pagination is not a thing yet \:\(
27
+
- does not implement the Ref / Partial routes yet (currently strips undefineds) (fixing this soon)
28
+
- also implements the entirety of the Constellation API routes as a bonus (under `/links/`)
29
+
- Lexicon:
30
+
- unsure about PostViewRef's optional fields
31
+
- theres 3 remaining profile-related routes thats still not defined yet
32
+
- some routes need more tweaks
33
+
- considering adding optional query params to request either skeleton only, partials, or full hydrated (might not be respected by the server though lol)
34
+
- 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
28
35
36
+
### View Server
37
+
- pratically unimplemented
38
+
- currently mostly just proxies api.bsky.app
39
+
- i havent split the DB between the Index server and View server yet
40
+
- hydration (resolving `Ref`s, handling partials) will be implemented soon i think
41
+
- 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 ))
29
42
30
-
there is still a lot of design work i havent done regarding stuff like:
31
-
- moderation
32
-
- indexing provenance
33
-
- registration/unregistration APIs
34
-
- cross instance backfills/viewing
35
-
- 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
36
-
- and more
43
+
## Running
44
+
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.
45
+
46
+
the project is split into two, the "Index Server" and the "View Server".
47
+
these currently run in a single process and share the same HTTP server and port.
48
+
49
+
configuration is in the `.env` file
50
+
51
+
expose your localhost to the web using a tunnel or something and use that url as the custom appview url
52
+
53
+
this should work on any bluesky client that supports changing the appview URL (im using an unreleased custom fork for development)
37
54
38
-
still very early
39
-
this does not run on any bsky clients yet
40
-
practically none of the api routes have been implemented yet
55
+
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
56
+
57
+
id say this project is like uhh ~20% done so not a lot of things you can do with this right now