Skip to content

Following + a simple activity feed (#167 Phase 3) #193

Description

@dmccoystephenson

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

  • 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.

Dependencies

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions