Social Feed
Overview
Section titled “Overview”The social feed shows events created or saved by users that the authenticated user follows. It is separate from the recommendation feed — the social feed is driven by follow relationships, not by personalized scoring.
Behaviors
Section titled “Behaviors”Feed Content
Section titled “Feed Content”The social feed aggregates:
- Events created by followed users (type = USER source events/gigs).
- Events saved to public collections by followed users.
Each feed item includes the event details and the action context (who created/saved it and when).
Ordering
Section titled “Ordering”Feed items are ordered by the action timestamp (when the followed user created or saved the event), most recent first.
Pagination
Section titled “Pagination”GET /api/v1/social/feed accepts limit and offset for pagination.
Empty Feed
Section titled “Empty Feed”If the user follows nobody, the feed is empty. The frontend suggests users to follow based on shared interests or major.
Endpoint
Section titled “Endpoint”GET /api/v1/social/feed
| Param | Type | Default | Description |
|---|---|---|---|
| limit | Int | 20 | Items per page |
| offset | Int | 0 | Pagination offset |
Response Item Shape
Section titled “Response Item Shape”{ "event": { ... }, "action": "created" | "saved", "actor": { "id": "...", "displayName": "..." }, "actionAt": "2025-04-01T10:00:00Z"}Scenarios
Section titled “Scenarios”S-SFEED-1: See events created by followed users
Section titled “S-SFEED-1: See events created by followed users”GIVEN user A follows user BAND user B created event EWHEN user A sends GET /api/v1/social/feedTHEN the feed contains event E with action "created" and actor = user BS-SFEED-2: See events saved by followed users
Section titled “S-SFEED-2: See events saved by followed users”GIVEN user A follows user BAND user B saved event E to a PUBLIC collectionWHEN user A sends GET /api/v1/social/feedTHEN the feed contains event E with action "saved" and actor = user BS-SFEED-3: Private collection saves not in feed
Section titled “S-SFEED-3: Private collection saves not in feed”GIVEN user A follows user BAND user B saved event E to a PRIVATE collectionWHEN user A sends GET /api/v1/social/feedTHEN event E does not appear in user A's feed (from user B's save)S-SFEED-4: Feed ordering
Section titled “S-SFEED-4: Feed ordering”GIVEN user A follows user B and user CAND user B created event E1 at T1AND user C saved event E2 at T2 (T2 > T1)WHEN user A sends GET /api/v1/social/feedTHEN E2 appears before E1S-SFEED-5: Empty feed
Section titled “S-SFEED-5: Empty feed”GIVEN user A follows nobodyWHEN user A sends GET /api/v1/social/feedTHEN the response contains an empty data arrayS-SFEED-6: Pagination
Section titled “S-SFEED-6: Pagination”GIVEN user A's social feed has 50 itemsWHEN user A sends GET /api/v1/social/feed?limit=10&offset=10THEN the response contains items 11-20AND meta.total is 50S-SFEED-7: Unfollowed user’s events disappear
Section titled “S-SFEED-7: Unfollowed user’s events disappear”GIVEN user A follows user B and sees user B's events in the feedWHEN user A unfollows user BTHEN user B's events no longer appear in user A's social feedS-SFEED-8: Same event created and saved appears once
Section titled “S-SFEED-8: Same event created and saved appears once”GIVEN user A follows user BAND user B created event EAND user B also saved event E to a PUBLIC collectionWHEN user A sends GET /api/v1/social/feedTHEN event E appears once with action "created" (creation takes precedence)S-SFEED-9: Same event saved to multiple public collections appears once
Section titled “S-SFEED-9: Same event saved to multiple public collections appears once”GIVEN user A follows user BAND user B saved event E to PUBLIC collection C1 and PUBLIC collection C2WHEN user A sends GET /api/v1/social/feedTHEN event E appears once (deduplicated by event ID per actor)AND actionAt is the most recent save timestamp