A community based topic aggregation platform built on atproto

feat(feeds): wire feed service into server

Integrates community feed functionality into the main server:

- Initialize CommunityFeedRepository with database connection
- Initialize CommunityFeedService with dependencies
- Register feed XRPC routes (public endpoints)
- Add startup logging for feed service

Dependency injection flow:
feedRepo ← db
feedService ← feedRepo + communityService
feedHandler ← feedService

Routes registered:
- GET /xrpc/social.coves.feed.getCommunity (public)

The feed service is now live and ready to serve community feeds.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

Changed files
+9
cmd
server
+9
cmd/server/main.go
···
"Coves/internal/atproto/identity"
"Coves/internal/atproto/jetstream"
"Coves/internal/core/communities"
+
"Coves/internal/core/communityFeeds"
"Coves/internal/core/posts"
"Coves/internal/core/users"
"bytes"
···
postRepo := postgresRepo.NewPostRepository(db)
postService := posts.NewPostService(postRepo, communityService, defaultPDS)
+
// Initialize feed service
+
feedRepo := postgresRepo.NewCommunityFeedRepository(db)
+
feedService := communityFeeds.NewCommunityFeedService(feedRepo, communityService)
+
log.Println("✅ Feed service initialized")
+
// Start Jetstream consumer for posts
// This consumer indexes posts created in community repositories via the firehose
// Currently handles only CREATE operations - UPDATE/DELETE deferred until those features exist
···
routes.RegisterPostRoutes(r, postService, authMiddleware)
log.Println("Post XRPC endpoints registered with OAuth authentication")
+
+
routes.RegisterCommunityFeedRoutes(r, feedService)
+
log.Println("Feed XRPC endpoints registered (public, no auth required)")
r.Get("/health", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)