this repo has no description
1# pds.js 2 3A zero-dependency AT Protocol Personal Data Server written in JavaScript, running on Cloudflare Workers with Durable Objects. Let's see how far we can get with just Web APIs. 4 5> ⚠️ **Work in progress** - This is experimental. You probably shouldn't use this yet. 6 7## Status 8 9- [x] Repo operations (createRecord, getRecord, putRecord, deleteRecord, applyWrites, listRecords) 10- [x] Sync endpoints (getRepo, getRecord, subscribeRepos, listRepos, getLatestCommit) 11- [x] Auth (createSession, getSession) 12- [x] Handle resolution (resolveHandle) 13- [x] AppView proxy (app.bsky.* forwarding with service auth) 14- [x] Relay notification (requestCrawl) 15- [x] Single or multi-user (each DID gets isolated storage, no self-service signup yet) 16- [ ] Blob storage (uploadBlob, getBlob, listBlobs) 17- [ ] refreshSession 18- [ ] deleteSession (logout) 19- [ ] updateHandle 20- [ ] importRepo 21- [ ] OAuth 22- [ ] Account management (createAccount, deleteAccount) 23- [ ] Email verification 24- [ ] Invite codes 25- [ ] Admin/moderation 26- [ ] Rate limiting 27 28## Prerequisites 29 30- Node.js 18+ 31- [shfmt](https://github.com/mvdan/sh) (optional, for `npm run format`) 32 ```bash 33 brew install shfmt 34 ``` 35 36## Quick Start 37 38```bash 39npm install 40 41# Create local dev config 42cp .env.example .dev.vars 43# Edit .dev.vars with your values 44 45# Run locally 46npm run dev 47``` 48 49## Configuration 50 51For local development, create `.dev.vars`: 52 53``` 54PDS_PASSWORD=your-password 55JWT_SECRET=your-secret 56RELAY_HOST=https://bsky.network # optional 57``` 58 59For production, use Cloudflare secrets: 60 61```bash 62wrangler secret put PDS_PASSWORD 63wrangler secret put JWT_SECRET 64wrangler secret put RELAY_HOST # optional 65``` 66 67## Testing 68 69```bash 70npm test # Unit tests 71npm run test:e2e # E2E tests (starts local server) 72``` 73 74## Deploy 75 76```bash 77wrangler deploy 78``` 79 80## Initialize 81 82After deployment, run the setup script to register with PLC and initialize: 83 84```bash 85npm run setup -- --pds https://your-pds.workers.dev 86``` 87 88This generates keys, registers your DID with the PLC directory, initializes the PDS, and saves credentials. Handle defaults to the worker hostname.