An in-browser wisp.place site explorer
at main 21 lines 1.6 kB view raw view rendered
1# wisp-explorer 2 3An in-browser [wisp.place](https://wisp.place) explorer. Currently deployed at [explore.wisp.place](https://explore.wisp.place/). 4 5## how? 6 7- Resolves handles to did:plc or did:web from the Bluesky API and gets DID document from plc.directory (or .well-known for did:web) 8- Resolves wisp.place sites from PDS and lists them; 9- On site load, grabs the manifest and sends it to service worker, which stores it within indexedDb context; 10- on each page, injects a `<base>` URL to navigate from and overwrites absolute links + css links to derive from the base url 11- Service worker then caches blobs in the indexedDb, decompresses the blob data, and intercepts requests to serve the site 12 13Currently doesn't handle forced redirects well (you'll notice this for my [kuudere.pl](https://kuudere.pl) site). 14 15## colophon 16 17This repo was an experiment for me in a few ways: I've never worked with any atproto utilities; I've never bootstrapped a project with AI tooling and I've been curious to understand how wisp.place works, since I use it for all my static sites. 18 19I built this with the [pi](https://shittycodingagent.ai/) coding agent; Claude Sonnet 4.5 and I wrote out a plan through discussing various methods of implementation, then broke it into tasks for GLM 4.7 to build out. A few renderer approaches were attempted, but none of them were faithful. This one, while unorthodox (and kinda scary?) works fairly stably across sites I've tested. 20 21Overall I was surprised how quickly it caught onto ATProto patterns and I learned a lot about DID resolution and PDS parsing.