Files
tranquil-pds/TODO.md
2025-12-03 18:07:07 +02:00

4.2 KiB

Implementation TODOs

Lewis' special big boy todofile

1. Server Infrastructure & Health

  • Health Check
    • Implement GET /health endpoint (returns "OK").
  • Server Description
    • Implement com.atproto.server.describeServer (returns available user domains).

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.
    • Initialize user repository.
    • Return access JWT and DID.
    • MST stuff I think...
  • Session Management

    • Implement com.atproto.server.createSession (Login).
      • Validate identifier (handle/email) and password.
      • Return access JWT, refresh JWT, and DID.
    • Implement com.atproto.server.getSession.
      • Verify JWT validity.
    • Implement com.atproto.server.refreshSession.
    • Implement com.atproto.server.deleteSession (Logout).
      • Invalidate current session/token.

3. Repository Operations (com.atproto.repo)

  • Record CRUD
    • Implement com.atproto.repo.createRecord.
      • Generate rkey if not provided.
      • Validate schema against Lexicon.
      • Handle swapCommit for optimistic locking.
    • Implement com.atproto.repo.putRecord.
      • Handle create vs update logic.
      • Validate repo matches authenticated user.
      • Validate record schema (e.g., missing required fields).
    • Implement com.atproto.repo.getRecord.
      • Handle missing params (400 Bad Request).
      • Handle non-existent record (404 Not Found).
    • Implement com.atproto.repo.deleteRecord.
    • Implement com.atproto.repo.listRecords.
      • Support pagination (limit, cursor).
  • Blob Management
    • Implement com.atproto.repo.uploadBlob.
      • Enforce authentication.
      • Validate MIME types (reject unsupported).
      • Return blob reference ($link).
  • Repo Meta
    • Implement com.atproto.repo.describeRepo.

4. Actor & Profile (app.bsky.actor)

  • Profile Management
    • Implement app.bsky.actor.getProfile.
      • Resolve handle to DID.
      • Return profile record data.
  • Discovery
    • Implement app.bsky.actor.searchActors.

5. Feed & Timeline (app.bsky.feed)

  • Feed Retrieval
    • Implement app.bsky.feed.getTimeline.
    • Implement app.bsky.feed.getAuthorFeed.
      • Filter by actor.
      • Respect mutes (if viewer is authenticated).
    • Implement app.bsky.feed.getPostThread.
      • Construct thread tree (parents, replies).
      • Handle deleted posts (return notFoundPost view).
  • Record Types
    • Support app.bsky.feed.post record type.
    • Support app.bsky.feed.like record type.
    • Support app.bsky.embed.images in posts.

6. Social Graph (app.bsky.graph)

  • Relationships
    • Implement app.bsky.graph.getFollows.
    • Implement app.bsky.graph.getFollowers.
    • Implement app.bsky.graph.getMutes.
    • Implement app.bsky.graph.getBlocks.
  • Record Types
    • Support app.bsky.graph.follow record type.
    • Support app.bsky.graph.mute record type.

7. Notifications (app.bsky.notification)

  • Notification Management
    • Implement app.bsky.notification.listNotifications.
      • Aggregate notifications (likes, follows, replies).
    • Implement app.bsky.notification.getUnreadCount.
      • Track read state.
      • Reset count on list/read.

8. Identity (com.atproto.identity)

  • Resolution
    • Implement com.atproto.identity.resolveHandle.

9. Sync & Federation (com.atproto.sync)

  • Data Export
    • Implement com.atproto.sync.getRepo (Export CAR file).
    • Implement com.atproto.sync.getBlocks.

10. General Requirements

  • Validation
    • Ensure all endpoints validate input parameters.
    • Ensure proper error codes (400, 401, 404, 409).
  • Concurrency
    • Ensure thread safety for repo updates.