Page: Community Feed
Code: FEED Route: /community Access: Authenticated Priority: P0 Status: In Scope
Purpose
X.com-style algorithmic feed showing posts from followed users, courses, and creators, enabling community engagement and content discovery.
Connections
Incoming (users arrive from)
| Source | Trigger | Notes |
| Nav | "Community" / "Feed" link | Global navigation |
| SDSH | "Community" quick action | From dashboard |
| NOTF | Notification about post | Direct to specific post |
| (External) | Direct URL | `/community` |
Outgoing (users navigate to)
| Target | Trigger | Notes |
| PROF | Author name/avatar click | View poster's profile |
| CDET | Course mention click | View mentioned course |
| CPRO | Creator mention click | View creator profile |
| IFED | "View [Creator] Feed" | Instructor-specific feed |
| (Post Detail) | Post click | Expand post with replies |
Data Requirements
| Entity | Fields Used | Purpose |
| posts | id, author_id, content, post_type, created_at, is_pinned | Feed content |
| users | id, name, avatar, handle | Author display |
| follows | follower_id, followed_id | Who user follows |
| course_follows | user_id, course_id | Course subscriptions |
| post_interactions | post_id, type, count | Like/bookmark counts |
| (Stream API) | feed data | External feed service |
Sections
Header
- • Page title: "Community" or "Your Feed"
- • Feed type tabs (optional): "For You" / "Following" / "Courses"
Post Composer
- • Avatar of current user
- • Text input: "What's on your mind?"
- • Post type selector (optional):
- • Media attachment (future)
- • "Post" button
Feed
- • Infinite scroll of posts
- • Each post shows:
- • Pinned posts at top (from moderators)
Sidebar (Desktop)
- • **Suggested Follows:**
- • **Trending Topics:**
- • **Upcoming Sessions:**
- • **Who to Follow:**
Empty State
- • New user with no follows: "Follow some creators to see posts here"
- • Suggestions for who to follow
User Stories Fulfilled
- • US-S025: Access community feed
- • US-P002: Platform provides community feed
- • US-S036: View posts in algorithmic order
- • US-S037: Like posts
- • US-S038: Bookmark posts
- • US-S039: Reply to posts
- • US-S040: Repost content
- • US-S041: Flag inappropriate content
States & Variations
| State | Description |
| Default | Algorithmic feed of followed content |
| Empty | No follows, show suggestions |
| Filtered | Viewing specific category (courses, following) |
| Composing | Post composer expanded |
| Loading | Skeleton posts while fetching |
Mobile Considerations
- • Full-width post cards
- • Floating compose button (FAB)
- • Hide sidebar, move to bottom sheet
- • Pull-to-refresh
- • Infinite scroll with loading indicator
Error Handling
| Error | Display |
| Feed load fails | "Unable to load feed. [Retry]" |
| Post fails | "Unable to post. Please try again." |
| Like/action fails | Toast: "Action failed. Try again." |
Analytics Events
| Event | Trigger | Data |
`page_view` | Page load | feed_type |
`post_created` | Post submitted | post_type, has_media |
`post_liked` | Like clicked | post_id |
`post_bookmarked` | Bookmark clicked | post_id |
`post_replied` | Reply submitted | post_id |
`post_reposted` | Repost clicked | post_id |
`post_flagged` | Flag submitted | post_id, reason |
`profile_clicked` | Author clicked | user_id |
Notes
- • **Stream.io integration:** Feed infrastructure via GetStream (CD-008)
- • CD-013: 5 feed types documented in tech-002-stream.md
- • Token generated server-side, never expose API secret to client
- • Consider "Mute" feature for noisy users
- • Moderation: Flagged posts go to MODQ (Stream + our moderation)
- • Real-time updates via Stream's WebSocket infrastructure
- • Hybrid DB+Stream ensures data durability and fast delivery