A simple self-host service providing API keys for tightly scoped alterations to your atproto records blinkers.dev

blinkers.dev site with docs, a static PDS and a wisp deploy #20

Merged byjp.me
targeting main from site
Merged opened by and assigned to byjp.me
targeting main from site

Adds blinkers.dev. It's a static SvelteKit site in web/, and Tangled CI publishes it to wisp.place together with a static PDS for did:web:blinkers.dev.

What's in it #

  • Homepage. An animated architecture diagram sits above four tabs. Each tab takes an atproto developer through one step of running their own instance:
    • Lens: pick a template and publish a dev.blinkers.lens record by signing in with OAuth. The scope is limited to repo:dev.blinkers.lens?action=create&action=update. If you'd rather not sign in, the tab gives you a manual curl command instead.
    • Deploy: how to host it.
    • Configure: an env block filled in from your handle, with a key generated in the browser.
    • Call: an example XRPC request.
  • Docs (/docs/): Diátaxis how-tos, reference and explanation, moved here from the README and spec. They're linted with Vale against .vale-ste.yml and have Pagefind search.
  • Light and dark mode. The header and diagram stay deep purple in both modes. The tabs panel and the docs follow the system setting.
  • CI (.tangled/workflows/site.yml, ci/site.sh):
    • Every push and PR runs svelte-check, the tests, Vale, the build, Pagefind and at-sdp build. The build fails if a key-shaped blink_… string appears anywhere in the output.
    • Pushes to main also deploy to the wisp site blinkers.dev as byjp.me, then run at-sdp check against the live site.
    • at-sdp v0.1.1 is fetched by CID from the owner's PDS, because Tangled's artifact download link currently returns 404.
  • The README is trimmed to point at blinkers.dev.

Before merging #

  • Add the AT_SDP_PRIVATE_KEY secret. The deploy reuses the existing REPO_OWNER_APP_PASSWORD.
  • Merging to main runs the first real deploy.

Not yet covered #

  • A real OAuth sign-in and publish. This needs a live account and hasn't been done.
  • The Railway "Deploy" button stays hidden until the image is on a registry Railway templates accept, such as GHCR.
Commits 0