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).