Statusphere, but in atcute and SvelteKit
atproto svelte sveltekit drizzle atcute typescript
TypeScript 58.0%
Svelte 29.6%
JavaScript 6.8%
CSS 3.5%
HTML 0.7%
Other 1.3%
5 1 0

Clone this repository

https://tangled.org/mary.my.id/atcute-statusphere-example https://tangled.org/did:plc:ia76kvnndjutgedggx2ibrem/atcute-statusphere-example
git@tangled.org:mary.my.id/atcute-statusphere-example git@tangled.org:did:plc:ia76kvnndjutgedggx2ibrem/atcute-statusphere-example

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

statusphere#

a reimplementation of Bluesky's Statusphere example app, using atcute and SvelteKit.

screenshot of the web interface

setup#

  1. install dependencies:

    pnpm install
    
  2. set up the environment variables:

    pnpm env:setup
    

    this copies the .env.example file to .env with the following values filled in:

    • COOKIE_SECRET - random secret for signing cookies
    • OAUTH_PRIVATE_KEY_JWK - ES256 keypair for OAuth
  3. start a Tap instance:

    docker run -p 2480:2480 \
      -e TAP_SIGNAL_COLLECTION=xyz.statusphere.status \
      -e TAP_COLLECTION_FILTERS=xyz.statusphere.status,app.bsky.actor.profile \
      ghcr.io/bluesky-social/indigo/tap:latest
    

    Tap handles subscribing to the atproto firehose, backfilling repos, and filtering events. we set it up such that it'd backfill all repos that have posted a status, and only emits events for status and profile records.

    then configure the Tap connection:

    TAP_URL=http://localhost:2480
    
    # if configured with a password
    TAP_ADMIN_PASSWORD=
    
  4. set up a tunnel:

    confidential OAuth clients requires a publicly accessible URL. for local development, you'll need to tunnel your local server using a service like ngrok or [cloudflared](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/do wnloads/).

    once running, set the tunnel URL as your public URL in .env:

    OAUTH_PUBLIC_URL=https://your-tunnel-url.example.com
    
  5. migrate the database:

    pnpm db:migrate
    
  6. run it!

    pnpm dev