···
204
+
### Blob Upload Proxy System
205
+
**Status:** Design documented, implementation TODO
206
+
**Priority:** CRITICAL for Beta - Required for image/video posts in communities
208
+
**Problem:** Users on external PDSs cannot directly upload blobs to community-owned PDS repositories because they lack authentication credentials for the community's PDS.
210
+
**Solution:** Coves AppView acts as an authenticated proxy for blob uploads:
213
+
1. User uploads blob to Coves AppView via `social.coves.blob.uploadForCommunity`
214
+
2. AppView validates user can post to community (not banned, community accessible)
215
+
3. AppView uses community's PDS credentials to upload blob via `com.atproto.repo.uploadBlob`
216
+
4. AppView returns CID to user
217
+
5. User creates post record referencing the CID
218
+
6. Post and blob both live in community's PDS
220
+
**Implementation Checklist:**
221
+
- [ ] Handler: `social.coves.blob.uploadForCommunity` endpoint
222
+
- [ ] Validation: Check user authorization to post in community
223
+
- [ ] Credential Management: Reuse community token refresh logic
224
+
- [ ] Upload Proxy: Forward blob to community's PDS with community credentials
225
+
- [ ] Security: Size limits, content-type validation, rate limiting
226
+
- [ ] Testing: E2E test with federated user uploading to community
228
+
**Why This Approach:**
229
+
- ✅ Works with federated users (any PDS)
230
+
- ✅ Reuses existing community credential infrastructure
231
+
- ✅ Matches V2 architecture (AppView orchestrates, communities own data)
232
+
- ✅ Blobs stored on correct PDS (community's repository)
233
+
- ❌ AppView becomes upload intermediary (bandwidth cost)
235
+
**Alternative Considered:** Direct user uploads to community PDS
236
+
- Rejected: Would require creating temporary user accounts on every community PDS (complex, insecure)
238
+
**See:** Design discussion in context of ATProto blob architecture
**Status:** Lexicon designed, implementation TODO
**Priority:** HIGHEST for Beta 1
···
- [ ] Decide membership requirements for posting
**Without posts, communities exist but can't be used!**
256
+
**Depends on:** Blob Upload Proxy System (for image/video posts)