Activity Feed
Feature Detail
Description
The Activity Feed feature displays a chronological stream of recent actions taken across the organization, giving coordinators and admins a live operational pulse without navigating into individual records. The feed surfaces events such as newly registered activities, submitted expense claims, completed assignments, and user role changes. Each feed entry links directly to the relevant record, enabling quick drill-down from the feed into the detail view of any event.
Analysis
Coordinators currently have no passive awareness of what is happening across their team between active check-ins. The activity feed provides ambient visibility into peer mentor behavior, surfacing unusual patterns - sudden inactivity, clusters of expense submissions, unacknowledged assignments - before they become problems. This reduces the supervisory burden on coordinators and improves response time to issues. For organization administrators the feed provides accountability and traceability without requiring access to the full audit log. From a product differentiation standpoint, a live activity feed makes the admin portal feel operationally active rather than a static reporting tool, which increases daily engagement and perceived value.
Feed entries are generated by a server-side feed service that listens for writes to key tables (activities, expense_claims, assignments, user_roles) and inserts normalized event rows into a dedicated feed_events table, scoped by organization_id. The REST endpoint (`GET /api/v1/admin/feed`) returns paginated results (cursor-based, 20 items per page) sorted by created_at descending. Tenant isolation is enforced at the query level - coordinators additionally see only events from peer mentors within their local chapter. The Next.js frontend renders the feed as an infinite-scroll list with each entry showing actor, action type, target record name, and relative timestamp. Deep links from feed entries route to the relevant admin detail page. For MVP, polling every 60 seconds is acceptable; websocket push can be added in a later iteration. Feed retention policy (e.g. 90 days) is configurable via environment variable.
Components (43)
Shared Components
These components are reused across multiple features
User Interface (9)
Service Layer (15)
Data Layer (8)
Infrastructure (7)
User Stories
No user stories have been generated for this feature yet.