Skip to content

aliceisjustplaying/zodiacsigns

Repository files navigation

Prerequisites

Setup

Clone the repo and run bun i to install the dependencies. This project uses Bun for package management.

Run bunx @skyware/labeler setup to convert an existing account into a labeler. You can exit after converting the account; there's no need to add the labels with the wizard. We'll do that from code.

Copy the .env.example file to .env and fill in the values:

DID=did:plc:xxx
SIGNING_KEY=xxx
BSKY_IDENTIFIER=xxx
BSKY_PASSWORD=xxx
PORT=4002
METRICS_PORT=4102
FIREHOSE_URL=wss://jetstream.atproto.tools/subscribe
CURSOR_UPDATE_INTERVAL=10000

A cursor.txt file containing the time in microseconds also needs to be present. If it doesn't exist, it will be created with the current time.

Fill out src/constants.ts with the related post rkeys (record keys), label IDs and so on, then run bunx tsx src/set-labels.ts to create/update all labels at once.

Alternatively, use bunx @skyware/labeler label add and edit src/constants.ts after.

The server connects to Jetstream, which provides a WebSocket endpoint that emits ATProto events in JSON. There is a public instance available at wss://jetstream.atproto.tools/subscribe.

The server needs to be reachable outside your local network using the URL you provided during the account setup (typically using a reverse proxy such as Caddy):

labeler.example.com {
	reverse_proxy 127.0.0.1:4002
}

Metrics are exposed on the defined METRICS_PORT for Prometheus. This dashboard can be used to visualize the metrics in Grafana.

Start the project with bun run start.