this repo has no description
1# PDS Implementation TODOs 2 3Lewis' corrected big boy todofile 4 5## 1. Server Infrastructure & Proxying 6- [x] Health Check 7 - [x] Implement `GET /health` endpoint (returns "OK"). 8- [x] Server Description 9 - [x] Implement `com.atproto.server.describeServer` (returns available user domains). 10- [x] XRPC Proxying 11 - [x] Implement strict forwarding for all `app.bsky.*` and `chat.bsky.*` requests to an appview. 12 - [x] Forward Auth headers correctly. 13 - [x] Handle AppView errors/timeouts gracefully. 14 15## 2. Authentication & Account Management (`com.atproto.server`) 16- [x] Account Creation 17 - [x] Implement `com.atproto.server.createAccount`. 18 - [x] Validate handle format (reject invalid characters). 19 - [x] Create DID for new user (PLC directory). 20 - [x] Initialize user repository (Root commit). 21 - [x] Return access JWT and DID. 22 - [ ] Create DID for new user (did:web). 23- [x] Session Management 24 - [x] Implement `com.atproto.server.createSession` (Login). 25 - [x] Implement `com.atproto.server.getSession`. 26 - [x] Implement `com.atproto.server.refreshSession`. 27 - [x] Implement `com.atproto.server.deleteSession` (Logout). 28 29## 3. Repository Operations (`com.atproto.repo`) 30- [ ] Record CRUD 31 - [ ] Implement `com.atproto.repo.createRecord`. 32 - [ ] Validate schema against Lexicon (just structure, not complex logic). 33 - [ ] Generate `rkey` (TID) if not provided. 34 - [ ] Handle MST (Merkle Search Tree) insertion. 35 - [ ] **Trigger Firehose Event**. 36 - [ ] Implement `com.atproto.repo.putRecord`. 37 - [ ] Implement `com.atproto.repo.getRecord`. 38 - [ ] Implement `com.atproto.repo.deleteRecord`. 39 - [ ] Implement `com.atproto.repo.listRecords`. 40 - [ ] Implement `com.atproto.repo.describeRepo`. 41- [ ] Blob Management 42 - [ ] Implement `com.atproto.repo.uploadBlob`. 43 - [ ] Store blob (S3). 44 - [ ] return `blob` ref (CID + MimeType). 45 46## 4. Sync & Federation (`com.atproto.sync`) 47- [ ] The Firehose (WebSocket) 48 - [ ] Implement `com.atproto.sync.subscribeRepos`. 49 - [ ] Broadcast real-time commit events. 50 - [ ] Handle cursor replay (backfill). 51- [ ] Bulk Export 52 - [ ] Implement `com.atproto.sync.getRepo` (Return full CAR file of repo). 53 - [ ] Implement `com.atproto.sync.getBlocks` (Return specific blocks via CIDs). 54 - [ ] Implement `com.atproto.sync.getLatestCommit`. 55 - [ ] Implement `com.atproto.sync.getRecord` (Sync version, distinct from repo.getRecord). 56- [ ] Blob Sync 57 - [ ] Implement `com.atproto.sync.getBlob`. 58 - [ ] Implement `com.atproto.sync.listBlobs`. 59- [ ] Crawler Interaction 60 - [ ] Implement `com.atproto.sync.requestCrawl` (Notify relays to index us). 61 62## 5. Identity (`com.atproto.identity`) 63- [ ] Resolution 64 - [ ] Implement `com.atproto.identity.resolveHandle` (Can be internal or proxy to PLC). 65 - [ ] Implement `/.well-known/did.json` (Depends on supporting did:web). 66 67## 6. Record Schema Validation 68- [ ] `app.bsky.feed.post` 69- [ ] `app.bsky.feed.like` 70- [ ] `app.bsky.feed.repost` 71- [ ] `app.bsky.graph.follow` 72- [ ] `app.bsky.graph.block` 73- [ ] `app.bsky.actor.profile` 74- [ ] Other app(view) validation too!!! 75 76## 7. General Requirements 77- [ ] IPLD & MST 78 - [ ] Implement Merkle Search Tree (MST) logic for repo signing. 79 - [ ] Implement CAR (Content Addressable Archives) encoding/decoding. 80- [ ] Validation 81 - [ ] DID PLC Operations (Sign rotation keys).