Champion Portal Development Phase 2
Estimated Effort: 6–8 weeks
Focus: Events, Stories, Mentorship, Giving, ModerationPrerequisites: Phase 1 complete (Auth, Profile, Directory, Dashboard)
Related Documents:
- ../README.md — Champion Portal overview
- ../features/04-CONTRIBUTIONS.md — Contributions spec
- ../features/07-ADMIN-TOOLS.md — Admin tools spec
Phase 2 enables Champions to take action by submitting events, sharing stories, participating in mentorship, and accessing giving links. This phase also introduces the CLC approval workflow for content moderation.
After Phase 2, Champions can:
Phase 2 is divided into 4 sub-phases that can be implemented incrementally.
| Sub-Phase | Name | Prompt | Est. Time |
|---|---|---|---|
| 2.1 | Events Database & Submission | “Implement Phase 2.1” | 2–3 days |
| 2.2 | Events Approval Workflow | “Implement Phase 2.2” | 1–2 days |
| 2.3 | Stories & Mentorship | “Implement Phase 2.3” | 2–3 days |
| 2.4 | Giving Links & Dashboard Integration | “Implement Phase 2.4” | 1–2 days |
Goal: Champions can submit events with all necessary details.
Deliverables:
cp_events table migration (title, description, date, time, venue, city, region, status, submitter)Cp::Event model with validations and associationsCp::EventsController for submission and viewingAcceptance Test:
Goal: CLCs can review and approve/reject events in their region.
Deliverables:
Acceptance Test:
Goal: Champions can share stories and indicate mentorship availability.
Deliverables:
cp_stories table migration (title, content, image, submitter, status, featured)Cp::Story model with validationscp_champions.mentor_available booleanAcceptance Test:
Goal: Integrate giving links and update dashboard with new contribution features.
Deliverables:
Acceptance Test:
| Question | Decision | Source |
|---|---|---|
| CLC role structure | Regional coordinators with elevated permissions | README.md |
| Data ownership for events | Champion-submitted, stored in cp_events |
DATA-ARCHITECTURE.md |
| Question | Options | Notes |
|---|---|---|
| Can Champions edit events after CLC approval? | A) Yes B) No C) Limited time window | UX vs content integrity |
| Should stories auto-publish or always require review? | A) Auto-publish B) Always review C) Hybrid | Risk vs speed |
| How detailed should budget requests be? | A) Simple (Y/N) B) Detailed breakdown | For events that need university resources |
| Self-service mentor matching vs facilitated? | A) Self-service B) Facilitated C) Hybrid | Phase 2 vs later |
| Question | Who Decides | Impact |
|---|---|---|
| Event submission required fields | Product/Engagement | Form complexity |
| Story moderation turnaround | Engagement Team | User expectations |
| CLC training requirements | Engagement Team | Rollout timing |
| Giving link destinations | Advancement | External URLs |
| Area | Deliverables |
|---|---|
| Events | Submission form, approval queue, calendar, notifications |
| Stories | Submission form, image upload, approval, featured display |
| Mentorship | Availability toggle, directory filter |
| Giving | External links to donation pages |
| CLC Tools | Regional approval queue, moderation actions |
| Dashboard | Events section, stories section, updated quick actions |
| Feature | Phase |
|---|---|
| Discussion boards | Phase 3 |
| Direct messaging | Phase 4 |
| Event RSVP tracking | Phase 5 |
| Mentor matching system | Phase 5 (or separate project) |
| Criterion | Validation |
|---|---|
| Champion can submit event | Form works, event saved with pending status |
| CLC can approve/reject events | Approval queue functional, notifications sent |
| Approved events appear in calendar | Calendar displays regional events |
| Champion can submit story | Form works with image upload |
| Stories appear on dashboard when approved | Featured stories section populated |
| Mentor toggle works | Champions can mark themselves available |
| Directory filters by mentors | Search returns only mentors when filtered |
| Giving links work | External links navigate correctly |
| Metric | Target |
|---|---|
| Events submitted per month (pilot) | 5+ |
| Event approval turnaround | <24 hours |
| Stories submitted per month (pilot) | 3+ |
| Champions marked as mentors | 10+ |
| Model | Test Cases |
|---|---|
Cp::Event |
Valid factory, validation errors, status transitions, associations |
Cp::Event |
Scopes: by region, by status, upcoming |
Cp::Story |
Valid factory, image attachment, approval workflow |
| Controller | Test Cases |
|---|---|
Cp::EventsController |
Create, update (own only), view approved, index by region |
Cp::StoriesController |
Create, view approved, featured scope |
Cp::Clc::ApprovalsController |
CLC can approve/reject, non-CLC cannot access |
| Feature | Test Cases |
|---|---|
| Event submission flow | Submit → pending → CLC approves → appears in calendar |
| Story submission flow | Submit → pending → Staff approves → appears in spotlight |
| Mentor toggle | Enable → searchable → disable → not searchable |
| Scenario | Expected Behavior |
|---|---|
| Champion submits event outside their region | Allowed (but assigned to their region) |
| CLC approves event in different region | Rejected (403) |
| Champion edits another’s event | Rejected (403) |
After completing Phase 2, update:
| Document | Changes |
|---|---|
| ../README.md | Mark Phase 2 complete |
| ../development/DECISIONS.md | Record Tier 2 decisions made |
| CLC Training Guide | Create for CLC onboarding |
| Champion User Guide | Add events, stories, mentorship sections |