···22import * as z from "npm:zod";
3344// configure these from the config.jsonc file (you can use config.jsonc.example as reference)
55-const indexTarget = z.string().refine(
55+export const indexTarget = z.string().refine(
66 (val) => {
77 const parts = val.split("#");
88 if (parts.length !== 2) return false;
···4141 "did:plc:zzhzjga3ab5fcs2vnsv2ist3",
4242 "did:plc:jz4ibztn56hygfld6j6zjszg",
4343 ], // this would be all users in the instance to listen for all remote mentions
4444+ instant: ["true"]
4445 // future question for managing this specifically for like remote content tracking (followed users? items that appears in custom feeds?)
4546 });
4647}
···44this 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/)
77+- 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/)
88+- frontend: still deno and esbuild and tailwind and react and jsx and typescript (was fun getting these to run on deno)
89910## Status
1010-(as of 26 aug 2025)
1111+(as of 27 aug 2025)
1112currently the state of the project is:
1213### Index Server
1314- Database:
···1516- Registration:
1617 - not there yet. currently manually adding users
1718 - onboarding backfill is probably next maybe
1919+ - got a fancy new ui (not finished)
1820- Indexing:
1921 - Jetstream:
2022 - 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)
···3436 - 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
35373638### 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 ))
3939+- Registration:
4040+ - got a fancy new ui (not finished)
4141+ - no backfill yet
4242+- Bsky API Routes:
4343+ - currently mostly just proxies api.bsky.app
4444+ - Notifications works ! thanks to spacedust
4545+ - Following feed is probably next
4646+- Database:
4747+ - i havent split the DB between the Index server and View server yet
4848+- Hydration (resolving `Ref`s, handling partials):
4949+ - It works! not implemented for all routes yet but it can find a route i think maybe idk
5050+ - it does now have a ranking system to decide which index server to be prioritized if multiple index servers indexes the same user account. (and also supports both api sets (Bluesky AppView API (legacy/fallback) and Bluesky Index Server API ))
42514352## Running
4453this project is pre-alpha and not intended for general use yet. you are welcome to experiment if you dont mind errors or breaking changes.