Something went wrong. Try again.
An AT Protocol Personal Data Server written in JavaScript pdsjs.dev
pds atproto
Something went wrong. Try again.
README.md
Example apps #
Four working apps for the site platform. Each one discovers whose repo it serves from its own origin, so any of them runs on any account that installs it. docs/apps.md explains how they are put together.
| App | What it does |
|---|---|
photos.mjs |
Galleries from social.grain.* records: justified layouts, a lightbox, terrain headers for located galleries, a map, favourite counts from the network |
roasts.mjs |
A coffee roast log: a live roast timer, weight-loss and development-time metrics against Sweet Maria's roast card, notes and photos |
drop.mjs |
An image host: drag, paste or choose a file and the link copies itself. The link is the site's /.blobs/<cid> route, so it works anywhere an image URL does |
videos.mjs |
A video gallery from the Drive labs feature: drop a video into Drive on the account page and it plays here, streamed with seeking from /.blobs/<cid>. Read-only; uploads happen in Drive |
Each script deploys the site to your repo and publishes the manifest that makes it installable:
PDS_URL=https://pds.example.com \
PDS_DID=did:plc:… \
PDS_APP_PASSWORD=… \
node photos.mjs
Then install it from the account page's Sites section, or with
pdsjs-site install at://you.example.com/dev.pdsjs.app.manifest/photos.
roasts.mjs writes to com.chadtmiller.coffee.roast unless
ROAST_COLLECTION names another, and drop.mjs writes to
com.chadtmiller.drop.image unless DROP_COLLECTION names another. An NSID's
authority is every segment but the last, reversed, so use a domain you
control.