this repo has no description
PDS Implementation TODOs#
Lewis' corrected big boy todofile
1. Server Infrastructure & Proxying#
- Health Check
- Implement
GET /healthendpoint (returns "OK").
- Implement
- Server Description
- Implement
com.atproto.server.describeServer(returns available user domains).
- Implement
- XRPC Proxying
- Implement strict forwarding for all
app.bsky.*andchat.bsky.*requests to an appview. - Forward Auth headers correctly.
- Handle AppView errors/timeouts gracefully.
- Implement strict forwarding for all
2. Authentication & Account Management (com.atproto.server)#
- Account Creation
- Implement
com.atproto.server.createAccount. - Validate handle format (reject invalid characters).
- Create DID for new user (PLC directory).
- Initialize user repository (Root commit).
- Return access JWT and DID.
- Create DID for new user (did:web).
- Implement
- Session Management
- Implement
com.atproto.server.createSession(Login). - Implement
com.atproto.server.getSession. - Implement
com.atproto.server.refreshSession. - Implement
com.atproto.server.deleteSession(Logout).
- Implement
3. Repository Operations (com.atproto.repo)#
- Record CRUD
- Implement
com.atproto.repo.createRecord.- Validate schema against Lexicon (just structure, not complex logic).
- Generate
rkey(TID) if not provided. - Handle MST (Merkle Search Tree) insertion.
- Trigger Firehose Event.
- Implement
com.atproto.repo.putRecord. - Implement
com.atproto.repo.getRecord. - Implement
com.atproto.repo.deleteRecord. - Implement
com.atproto.repo.listRecords. - Implement
com.atproto.repo.describeRepo.
- Implement
- Blob Management
- Implement
com.atproto.repo.uploadBlob.- Store blob (S3).
- return
blobref (CID + MimeType).
- Implement
4. Sync & Federation (com.atproto.sync)#
- The Firehose (WebSocket)
- Implement
com.atproto.sync.subscribeRepos.- Broadcast real-time commit events.
- Handle cursor replay (backfill).
- Implement
- Bulk Export
- Implement
com.atproto.sync.getRepo(Return full CAR file of repo). - Implement
com.atproto.sync.getBlocks(Return specific blocks via CIDs). - Implement
com.atproto.sync.getLatestCommit. - Implement
com.atproto.sync.getRecord(Sync version, distinct from repo.getRecord).
- Implement
- Blob Sync
- Implement
com.atproto.sync.getBlob. - Implement
com.atproto.sync.listBlobs.
- Implement
- Crawler Interaction
- Implement
com.atproto.sync.requestCrawl(Notify relays to index us).
- Implement
5. Identity (com.atproto.identity)#
- Resolution
- Implement
com.atproto.identity.resolveHandle(Can be internal or proxy to PLC). - Implement
/.well-known/did.json(Depends on supporting did:web).
- Implement
6. Record Schema Validation#
-
app.bsky.feed.post -
app.bsky.feed.like -
app.bsky.feed.repost -
app.bsky.graph.follow -
app.bsky.graph.block -
app.bsky.actor.profile - Other app(view) validation too!!!
7. General Requirements#
- IPLD & MST
- Implement Merkle Search Tree (MST) logic for repo signing.
- Implement CAR (Content Addressable Archives) encoding/decoding.
- Validation
- DID PLC Operations (Sign rotation keys).