馃尋 Track the weather for event days wed.fyi
README.md

wed Server #

The AT Protocol AppView for wed.

Building #

cargo build -p server

Running #

cargo run -p server

Requirements #

PNG chart generation requires these fonts:

apt-get install fonts-dejavu-core fonts-noto-color-emoji

Environment variables #

Name Required Default Description
BSKY_HANDLE Yes Account that makes the app.bsky.feed.post
BSKY_APP_PASSWORD Yes Password for the account above
JETSTREAM_API_KEY Yes Get one at Bluesky Protocol Services
TTL No 1 Weather forecast cache expiration, in hours
DISTANCE No 15.0 Locations within this radius, in km, report the same weather forecast
SQLITE_PATH No db.sqlite Database path
PORT No 4000 Port where the server starts
ALLOWED_ORIGINS No https://dev.wed.fyi,https://wed.fyi Comma-separated CORS allowed origins
JETSTREAM_URL No wss://jetstream.us-east.bsky.network/xrpc/network.bsky.jetstream.subscribeEvents Jetstream websocket URL
JETSTREAM_SEQ No jetstream.seq file next to SQLITE_PATH Overrides the persisted Jetstream cursor on boot
SKIP_POST No 1 logs each would-be Bluesky post instead of publishing it (useful for development)

Endpoints #

Endpoint Description
GET /xrpc/app.bsky.actor.searchActorsTypeahead Proxy for Bluesky handle typeahead suggestions.
GET /xrpc/com.atproto.identity.resolveHandle Resolves an AT Protocol handle to a DID.
GET /xrpc/com.atproto.repo.getRecord Proxy for standard PDS getRecord.
GET /xrpc/com.atproto.repo.listRecords Proxy for standard PDS listRecords.
POST /xrpc/com.atproto.repo.createRecord Proxy for standard PDS createRecord.
POST /xrpc/com.atproto.repo.putRecord Proxy for standard PDS putRecord.
POST /xrpc/com.atproto.repo.deleteRecord Proxy for standard PDS deleteRecord.
GET /xrpc/fyi.wed.getForecast Fetches a weather forecast for an event.
GET /xrpc/fyi.wed.resolveGeolocation Resolves a location string to latitude and longitude.
GET /xrpc/fyi.wed.searchLocationsTypeahead Suggests up to 7 locations matching a query prefix.