You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Phase 3 of #167. Let a signed-in user follow another user, and render a simple activity feed of what the people they follow have done (liked a plugin, reviewed a plugin, etc.).
Scope
Backend (dpc-api): a Follow entity + table (follower_user_id, followee_user_id, unique pair, timestamp; both FK to the local User mirror). Endpoints: authenticated POST/DELETE /api/v1/follows/{username}, GET /api/v1/follows/me (who I follow / who follows me counts), and public follower/following counts surfaced on the public profile (PublicProfileResponse, added in Public profile pages — view another user's profile (#167 Phase 3) #181).
Activity feed: derive a feed from existing participation rows rather than a new write path at first — query recent Like (and, once it lands, Review) rows for the set of followed users, newest-first. Endpoint: authenticated GET /api/v1/feed. A dedicated activity table can come later if derivation gets expensive.
Frontend: a follow/unfollow button on the public profile page (pages/u/[username].tsx), follower/following counts on that page, and a /feed page for the signed-in user.
Why it matters
Following turns isolated profiles into a social graph and gives users a reason to return; the activity feed is the payoff that makes following worthwhile.
The feed's richness grows with the reviews issue; it is useful with likes alone.
Filed as a Phase 3 decomposition of #167; drafted by Claude on behalf of Daniel Stephenson. Claims verified against the User mirror, Like/LikeController, and the #181 public-profile surface.
Summary
Phase 3 of #167. Let a signed-in user follow another user, and render a simple activity feed of what the people they follow have done (liked a plugin, reviewed a plugin, etc.).
Scope
dpc-api): aFollowentity + table (follower_user_id,followee_user_id, unique pair, timestamp; both FK to the localUsermirror). Endpoints: authenticatedPOST/DELETE /api/v1/follows/{username},GET /api/v1/follows/me(who I follow / who follows me counts), and public follower/following counts surfaced on the public profile (PublicProfileResponse, added in Public profile pages — view another user's profile (#167 Phase 3) #181).Like(and, once it lands,Review) rows for the set of followed users, newest-first. Endpoint: authenticatedGET /api/v1/feed. A dedicatedactivitytable can come later if derivation gets expensive.pages/u/[username].tsx), follower/following counts on that page, and a/feedpage for the signed-in user.Why it matters
Following turns isolated profiles into a social graph and gives users a reason to return; the activity feed is the payoff that makes following worthwhile.
Dependencies
Filed as a Phase 3 decomposition of #167; drafted by Claude on behalf of Daniel Stephenson. Claims verified against the
Usermirror,Like/LikeController, and the #181 public-profile surface.