Champion Portal Development Phase 3
Estimated Effort: 4–6 weeks
Focus: National + Regional Discussion BoardsPrerequisites: Phase 1 & 2 complete
Related Documents:
- ../README.md — Champion Portal overview
- ../features/05-DISCUSSION-BOARDS.md — Discussion boards spec
Phase 3 introduces discussion boards — the “always-on” community aspect of the Champion Portal. Champions can participate in national conversations and regional coordination.
After Phase 3, Champions can:
Phase 3 is divided into 3 sub-phases that can be implemented incrementally.
| Sub-Phase | Name | Prompt | Est. Time |
|---|---|---|---|
| 3.1 | Boards Database & Structure | “Implement Phase 3.1” | 1–2 days |
| 3.2 | Posts, Comments & UI | “Implement Phase 3.2” | 2–3 days |
| 3.3 | Moderation & Announcements | “Implement Phase 3.3” | 1–2 days |
Goal: Create database structure for boards, posts, and comments.
Deliverables:
cp_boards table migration (name, type, scope, region_id, active)cp_posts table migration (board_id, author_id, title, content, pinned, status)cp_comments table migration (post_id, author_id, content, status)Cp::Board model with scopes (national, regional)Cp::Post model with associationsCp::Comment model with associationsAcceptance Test:
# In rails console:
national_boards = Cp::Board.national.pluck(:name)
# => ["General", "Jobs", "Mentorship", "Story Leads"]
nashville_board = Cp::Board.regional.find_by(region: Region.find_by(name: "Nashville Metro"))
nashville_board.name # => "Nashville Metro Discussion"
Goal: Champions can browse boards, create posts, and comment.
Deliverables:
Cp::BoardsController — index, showCp::PostsController — index, show, create, update, destroyCp::CommentsController — create, destroyAcceptance Test:
Goal: CLCs can moderate and pin content; basic moderation tools.
Deliverables:
cp_reports table (content_type, content_id, reporter_id, reason)Acceptance Test:
| Question | Options | Notes |
|---|---|---|
| Allow anonymous posting? | A) Yes B) No | Recommend: No — verified community |
| Post edit time limit? | A) None B) 15 min C) 1 hour | Balance editing vs accountability |
| Housing/roommate board? | A) Yes B) No C) Build if demand | Defer — build if organic demand |
| Rich text editor or Markdown? | A) Rich text (WYSIWYG) B) Markdown C) Plain text | UX preference |
| Thread replies or flat comments? | A) Threaded B) Flat | Complexity vs usability |
| Question | Who Decides | Impact |
|---|---|---|
| Which national boards at launch? | Product/Engagement | Seed data |
| Moderation escalation process | Engagement Team | Staff workflow |
| Notification frequency for board activity | Product | Email volume |
| Area | Deliverables |
|---|---|
| Boards | National boards, regional boards, board listing |
| Posts | Create, edit, view, list, pagination |
| Comments | Create, view, delete own |
| Moderation | Pin, hide, report, moderation queue |
| Dashboard | Recent posts integration |
| Feature | Phase |
|---|---|
| @mentions and notifications | Phase 4 |
| Affinity-based boards (College, Major, etc.) | Phase 5 |
| Rich media embeds (YouTube, etc.) | Future |
| Reactions/likes | Future |
| Criterion | Validation |
|---|---|
| Champion can view board list | All national + regional board visible |
| Champion can create post | Post appears on board |
| Champion can comment | Comment appears on post |
| CLC can pin announcement | Pinned post at top |
| CLC can hide content | Hidden content not visible to Champions |
| Reported content enters queue | Staff can see and act |
| Dashboard shows recent posts | Regional posts displayed |
| Metric | Target |
|---|---|
| Posts per week (pilot) | 10+ |
| Comments per post (average) | 2+ |
| Active posters (% of Champions) | 20+ |
| Model | Test Cases |
|---|---|
Cp::Board |
Scopes: national, regional; associations |
Cp::Post |
Validations, scopes (pinned, recent), associations |
Cp::Comment |
Validations, associations, soft delete |
Cp::Report |
Validations, associations |
| Controller | Test Cases |
|---|---|
Cp::BoardsController |
List boards, show board with posts |
Cp::PostsController |
Create, edit own, cannot edit others, view |
Cp::CommentsController |
Create, delete own |
Cp::Clc::ModerationController |
Pin, hide (CLC only) |
| Feature | Test Cases |
|---|---|
| Board browsing | Navigate boards → view posts → view comments |
| Post creation | Create → appears on board → editable by author |
| Moderation flow | Report → queue → CLC hides |
| Scenario | Expected Behavior |
|---|---|
| Champion posts to regional board | Allowed |
| Champion posts to different regional board | Allowed (cross-regional participation) |
| Champion edits another’s post | Rejected |
| CLC pins post in their region | Allowed |
| CLC pins post in different region | Rejected |
After completing Phase 3, update:
| Document | Changes |
|---|---|
| ../README.md | Mark Phase 3 complete |
| ../development/DECISIONS.md | Record board decisions |
| Champion User Guide | Add discussion boards section |
| CLC Training Guide | Add moderation procedures |