Proposal + design + specs + tasks for the social layer. Adds a `follows` relation (local + federated via ActivityPub), Follow buttons on public profiles, and a `/feed` route showing public activities from followed users. Capabilities: - New: social-follows (the graph + /feed) - Modified: public-profiles (Follow button + counts) - Modified: journal-landing (Feed link on signed-in dashboard) Design picks: - Pull-based feed (no fan-out-on-write) — fine at trails.cool scale - follows keyed by actor IRI, local denorm FK for join perf - Fedify wires Follow/Accept/Undo; we handle the DB side - Remote activity ingestion via polling (not push) — tolerates our downtime without losing activities Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
833 B
833 B
ADDED Requirements
Requirement: Social feed link for signed-in users
For signed-in users, the personal dashboard SHALL include a prominent link to the social feed at /feed (see social-follows spec, "Social activity feed") alongside the existing "New Activity" CTA. The link SHALL be visible regardless of whether the user follows anyone yet — the social feed's own empty state handles the zero-follows case.
Scenario: Feed link on personal dashboard
- WHEN a signed-in user loads
/ - THEN the dashboard header shows a "Feed" (or equivalent) link to
/feednext to the "New Activity" CTA
Scenario: Feed link is not shown to signed-out visitors
- WHEN an unauthenticated visitor loads
/ - THEN the visitor-home layout does not expose a link to
/feed(the route requires authentication)