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.lensrecord by signing in with OAuth. The scope is limited torepo:dev.blinkers.lens?action=create&action=update. If you'd rather not sign in, the tab gives you a manualcurlcommand 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.
- Lens: pick a template and publish a
- Docs (
/docs/): Diátaxis how-tos, reference and explanation, moved here from the README and spec. They're linted with Vale against.vale-ste.ymland 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 andat-sdp build. The build fails if a key-shapedblink_…string appears anywhere in the output. - Pushes to
mainalso deploy to the wisp siteblinkers.devasbyjp.me, then runat-sdp checkagainst 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.
- Every push and PR runs
- The README is trimmed to point at blinkers.dev.
Before merging #
- Add the
AT_SDP_PRIVATE_KEYsecret. The deploy reuses the existingREPO_OWNER_APP_PASSWORD. - Merging to
mainruns 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.