US-6.1 Create Post US-6.2 Browse Feed US-6.3 Comments US-6.4 Upvotes US-6.5 Report US-6.6 Save Post US-7.1 Teacher DM US-7.2 Parent→Teacher DM US-7.3 DM Inbox US-7.6 Student RLS US-6.7 Moderation
🗺 User Flow Diagram — P3 Screens
Feed (p3_01) ──────────────────────────────────────────────────────────┐ │ │ ├── [Community tab] ───────────────────────────────────── Community Feed (p3_08) │ │ ├── [Tap post] ──────────────────────────────────────── Post Detail + Comments (p3_03) │ │ │ │ │ └── [⋯ menu] ──── Report Modal (p3_04) │ └────────────────────────── Saved Posts (p3_05) │ ├── [Tap +] ──────────────────────────────────────────── Create Post (p3_02) │ │ │ [Post] ─────── Feed (pending → approved) │ └── [Messages tab] (non-student only) ────────── DM Inbox (p3_06) │ └── [Tap conversation] ──── DM Chat (p3_07) Moderation Dashboard (p3_09) ← BizCommit platform team only (separate access)
Community Feed Layer
US-6.1 → US-6.6
Feed & Content Screens
The primary social surface — institution-scoped with community cross-institution option. All posts are AI-moderated before appearing in the feed.
📋
P3-01
US-6.2
Institution Feed
US-6.2 · Browse Institution-Scoped Feed
📄 US-6.2 Spec  ·  🐦 feed_screen.dart · /feed  ·  ✅ Done (3.3a, 3.3b, 3.4)
Student Teacher Parent
My School / Community tab switcher with gradBar active indicator
Search bar + advanced filter funnel
Post type filter chips (horizontal scroll)
Sort: Newest / Most Engaged / Trending
Post cards: avatar, verified tick, type badge, image, tags, AI Verified badge
Anti-doomscroll boundary at end of feed
Floating create button (FAB)
Open Mockup →
✍️
P3-02
US-6.1
Create Post
US-6.1 · Create Institution-Scoped Post
📄 US-6.1 Spec  ·  🐦 post_composition_screen.dart · /feed/compose
⚠️ Partial (Task 3.1 · D-02, D-03 · Task C-06)
Student Teacher Parent
Post type grid selector (6 types: Achievement, Question, Discussion, Creative, Resource, Announcement)
Text area with real-time character counter (max 2000 chars)
Image upload with preview and remove (max 2MB, JPEG/PNG)
Tag multi-select (stored as JSONB array)
Visibility toggle: Share to Institution Feed (student default: OFF)
AI moderation notice (post enters pending state)
Open Mockup →
💬
P3-03
US-6.3 / 6.4
Post Detail + Comments
US-6.3 (Comments) · US-6.4 (Upvote)
📄 US-6.3/6.4 Spec  ·  🐦 comment_sheet.dart · upvote_button.dart
⚠️ Partial (Tasks 3.5, 3.6 · missing fn-comment-create, fn-upvote-toggle)
Student Teacher Parent
Full post body (no truncation) with complete image view
Engagement bar: upvote (toggle liked/unliked) + comment count + AI Verified badge
Comments sorted newest first; each comment has upvote + reply
Comment ··· menu: report or delete (own comments)
Sticky comment input at screen bottom (max 500 chars)
Real-time new comment notification without refresh
Open Mockup →
🚩
P3-04
US-6.5
Report Content Modal
US-6.5 · Report Inappropriate Post/Comment
📄 US-6.5 Spec  ·  🐦 report_modal.dart
⚠️ Partial (Task 3.7 · missing fn-report-create · Task C-08d)
Student Teacher Parent Admin
Bottom sheet modal overlaying blurred feed background
Reason radio selector (Bullying, NSFW, Misinformation, Self-Harm, Hate Speech)
Optional additional details textarea
Reporter anonymity note (identity hidden from content author)
Confirmation state shown after submission
3+ reports on same content → auto-escalated to top of queue
Open Mockup →
🔖
P3-05
US-6.6
Saved Posts
US-6.6 · Save Post Collection
📄 US-6.6 Spec  ·  🐦 save_post_button.dart · saved_posts_screen.dart · /feed/saved
⚠️ Partial (Task 3.8 · missing fn-saved-post-toggle · Task C-08e)
Student Teacher Parent Admin
Private collection (only visible to the saving user)
Stats summary: total saved, this week, post types
Sorted newest-saved first
Post thumbnail + type badge + text preview + saved-at timestamp
Unsave button (blue filled bookmark → tap to remove)
Anti-doomscroll boundary at end of collection
Open Mockup →
🌐
P3-08
US-6.2 (Community)
Community Feed (Cross-Institution)
US-6.2 · Community tab · visibility='community'
📄 US-6.2 Spec (Community)  ·  🐦 feed_screen.dart · community tab · /feed
✅ Done (Tasks 3.3a, 3.3b)
Student Teacher Parent
Community tab active; same UI as institution feed
School chip (📍 School Name) mandatory on every post — key differentiator
Posts from ALL institutions with visibility='community'
Community banner explaining cross-institution, AI-moderated feed
AI moderation enforced (only approved posts shown)
Anti-doomscroll boundary at end
Open Mockup →
Direct Messaging Layer
US-7.1 → US-7.6
Direct Messaging Screens
1:1 messaging restricted to teachers, parents, and admins. Students are RLS-excluded at database level (US-7.6). No content moderation for DMs (trusted verified users).
📩
P3-06
US-7.3
DM Inbox (Conversations List)
US-7.3 · View Conversations List
📄 US-7.3 Spec / US-7.6 RLS  ·  🐦 dm_inbox_screen.dart · /messages
✅ Done (Tasks 3.11, 3.9)
Teacher Parent Admin
Conversations sorted by most recent message first
Unread count badges (clear when conversation opened; read_at updated)
Online presence dot (green) for active users
Role label (Teacher / Parent / Admin) on each conversation
Last message preview truncated to ~50 chars
Student-blocked state shown instead (per US-7.6 RLS enforcement)
Open Mockup →
💭
P3-07
US-7.1 / 7.2
DM Conversation Thread
US-7.1 (Teacher↔Teacher) · US-7.2 (Parent→Teacher)
📄 US-7.1/7.2 Spec  ·  🐦 conversation_screen.dart · /messages/:id
✅ Done (Task 3.10a)  ·  ❌ new_conversation_screen missing (C-07)
Teacher Parent Admin
Chat header: recipient avatar, online status, role badge
Message bubbles: gradient (outgoing) vs white card (incoming)
Date dividers for message grouping
Live typing indicator (Supabase Realtime presence)
Read receipts (✓✓ blue = read, ✓ grey = delivered)
Attachment support: image or document (max 2MB)
Open Mockup →
Moderation & Admin Layer
US-6.7 (P3.5 Optional)
Moderation Dashboard
Internal tool for the BizCommit platform team. Not accessible to institution admins. All moderation actions are logged to an immutable audit trail.
🛡
P3-09
US-6.7
Moderation Dashboard
US-6.7 · Platform Team Content Moderation
📄 US-6.7 Spec  ·  🐦 moderation_queue_screen.dart · /moderation
✅ Done (Tasks 3.13a, 3.13b)  ·  ❌ moderation_logs table missing (C-03)
BizCommit Platform Team
Dark graphite top bar (admin persona — one of two dark surfaces)
Stats overview: Pending / Reported / Approved / Removed today
Queue tabs: Pending Review | User Reported | Audit Log
Severity strips: 🔴 High (danger) / 🟡 Medium (warn) / 🔵 Low (periwinkle)
Actions: Approve / Remove / Suspend Account / Dismiss
Append-only audit log with moderator ID + timestamp + action
Open Mockup →
🎨 Design System Applied — Key Decisions
Colors Used
gradBrand — FAB, Post button, active tabs
blue — Active nav, links, unread state
pink — Liked state, unread badges
safe — AI Verified badge, online dot, Teacher role
danger — Report button, high-severity strip
Rules Followed
✓ No bottom navigation (per requirement)
✓ Anti-doomscroll boundary on all feeds
✓ AI Verified badge on every post
✓ School chip on all community posts
✓ Dark surfaces restricted: admin bar + mod dashboard only
✓ Playfair Display for logo only; DM Sans for all UI
✓ White cards, snow background, mist borders
✓ gradBrand for interactive CTAs (FAB, Post btn)