trails/openspec/changes/social-feed/specs/journal-landing/spec.md
Ullrich Schäfer 94c4f4389e Propose: social-feed (follows + /feed)
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>
2026-04-25 22:26:20 +02:00

833 B

ADDED Requirements

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.

  • WHEN a signed-in user loads /
  • THEN the dashboard header shows a "Feed" (or equivalent) link to /feed next to the "New Activity" CTA
  • WHEN an unauthenticated visitor loads /
  • THEN the visitor-home layout does not expose a link to /feed (the route requires authentication)