this repo has no description
PDS Implementation TODOs#
Lewis' corrected big boy todofile
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
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
com.atproto.server.activateAccount. - Implement
com.atproto.server.checkAccountStatus. - Implement
com.atproto.server.createAppPassword. - Implement
com.atproto.server.createInviteCode. - Implement
com.atproto.server.createInviteCodes. - Implement
com.atproto.server.deactivateAccount/deleteAccount. - Implement
com.atproto.server.getAccountInviteCodes. - Implement
com.atproto.server.getServiceAuth(Cross-service auth). - Implement
com.atproto.server.listAppPasswords. - Implement
com.atproto.server.requestAccountDelete. - Implement
com.atproto.server.requestEmailConfirmation/requestEmailUpdate. - Implement
com.atproto.server.requestPasswordReset/resetPassword. - Implement
com.atproto.server.reserveSigningKey. - Implement
com.atproto.server.revokeAppPassword. - Implement
com.atproto.server.updateEmail. - Implement
com.atproto.server.confirmEmail.
- Implement
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
com.atproto.repo.applyWrites(Batch writes). - Implement
com.atproto.repo.importRepo(Migration). - Implement
com.atproto.repo.listMissingBlobs.
- Implement
- Blob Management
- Implement
com.atproto.repo.uploadBlob.- Store blob (S3).
- return
blobref (CID + MimeType).
- Implement
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
com.atproto.sync.getRepoStatus. - Implement
com.atproto.sync.listRepos. - Implement
com.atproto.sync.notifyOfUpdate.
- 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
Identity (com.atproto.identity)#
- Resolution
- Implement
com.atproto.identity.resolveHandle(Can be internal or proxy to PLC). - Implement
com.atproto.identity.updateHandle. - Implement
com.atproto.identity.submitPlcOperation/signPlcOperation/requestPlcOperationSignature. - Implement
com.atproto.identity.getRecommendedDidCredentials. - Implement
/.well-known/did.json(Depends on supporting did:web).
- Implement
Admin Management (com.atproto.admin)#
- Implement
com.atproto.admin.deleteAccount. - Implement
com.atproto.admin.disableAccountInvites. - Implement
com.atproto.admin.disableInviteCodes. - Implement
com.atproto.admin.enableAccountInvites. - Implement
com.atproto.admin.getAccountInfo/getAccountInfos. - Implement
com.atproto.admin.getInviteCodes. - Implement
com.atproto.admin.getSubjectStatus. - Implement
com.atproto.admin.sendEmail. - Implement
com.atproto.admin.updateAccountEmail. - Implement
com.atproto.admin.updateAccountHandle. - Implement
com.atproto.admin.updateAccountPassword. - Implement
com.atproto.admin.updateSubjectStatus.
Moderation (com.atproto.moderation)#
- Implement
com.atproto.moderation.createReport.
Record Schema Validation#
- Handle this generically.
Infrastructure & Core Components#
- Sequencer (Event Log)
- Implement a
Sequencer(backed byrepo_seqtable? Like in ref impl). - Implement event formatting (
commit,handle,identity,account). - Implement database polling / event emission mechanism.
- Implement cursor-based event replay (
requestSeqRange).
- Implement a
- Repo Storage & Consistency (in postgres)
- Implement
RepoStoragefor postgres (replaces per-user SQLite).- Read/Write IPLD blocks to
blockstable (global deduplication). - Manage Repo Root in
repostable.
- Read/Write IPLD blocks to
- Implement Atomic Repo Transactions.
- Ensure
blockswrite,repo_rootupdate,recordsindex update, andsequencerevent are committed in a single transaction.
- Ensure
- Implement concurrency control (row-level locking on
repostable) to prevent concurrent writes to the same repo.
- Implement
- DID Cache
- Implement caching layer for DID resolution (Redis or in-memory).
- Handle cache invalidation/expiry.
- Background Jobs
- Implement background queue for async tasks (crawler notifications, discord/telegram 2FA sending instead of email).
- Implement
Crawlersservice (debounce notifications to relays).
- Mailer equivalent
- Implement code/notification sending service as a replacement for the mailer because there's no way I'm starting with email. :D
- Image Processing
- Implement image resize/formatting pipeline (for blob uploads).
- IPLD & MST
- Implement Merkle Search Tree logic for repo signing.
- Implement CAR (Content Addressable Archive) encoding/decoding.
- Validation
- DID PLC Operations (Sign rotation keys).
- Fix any remaining TODOs in the code, everywhere, full stop.