⚠️ PLANNING DOCUMENT - This describes features that are NOT YET IMPLEMENTED.
Admin tools enable the Engagement Team and CLCs to manage the Champion Portal effectively.
| Tool | Champion | CLC | Engagement Team |
|---|---|---|---|
| View Champions | Own profile | Regional | All |
| Approve Champions | ❌ | ❌ | ✅ |
| Assign Roles | ❌ | ❌ | ✅ |
| Reassign Regions | ❌ | ❌ | ✅ |
| Approve Events | ❌ | Regional | All |
| Approve Stories | ❌ | ❌ | ✅ |
| Moderate Posts | ❌ | Regional | All |
| Pin Announcements | ❌ | Regional | All |
| View Reports | ❌ | Regional | All |
| Bulk Import | ❌ | ❌ | ✅ |
When a Champion completes registration:
Verification Queue Fields: | Field | Description | |——-|————-| | Name | Submitted name | | Email | Account email | | BUID | Submitted BUID | | Alumni Match | Matched Alumni record (if found) | | Registration Date | When account created | | Actions | Approve, Reject, Request More Info |
| Action | Description |
|---|---|
| Promote to CLC | Grant regional admin permissions |
| Demote from CLC | Remove regional admin permissions |
| Assign Admin | Grant Engagement Team access (rare) |
Track Champion engagement:
Manually change a Champion’s primary region:
Import Champions from existing database:
CLC Workflow:
Engagement Team Workflow:
Stories go directly to Engagement Team:
Moderation Queue: | Status | Description | |——–|————-| | Reported | Flagged by Champions | | Auto-flagged | Detected by content filter | | Hidden | Removed by CLC, pending review |
Actions:
CLCs and Engagement Team can pin posts:
Engagement Team can create official posts:
Feature stories on the dashboard:
Engagement Team can create events directly:
| Setting | Description |
|---|---|
| Region Name | Display name (can be friendlier than ZIP grouping) |
| District Mapping | Which ZIPs belong to which districts |
| Featured Districts | Highlight active districts (50+ alumni) |
| CLC Assignment | Who manages this region |
The ZIP → District → Region hierarchy:
Admin Functions:
Engagement Team notifications:
CLC notifications:
# Internal admin (Engagement Team) - extends existing internal portal
class Admin::ChampionsController < ApplicationController
before_action :authenticate_user!
before_action :ensure_admin # Internal admin
def index
@champions = Champion.pending_verification
end
def verify
@champion = Champion.find(params[:id])
@champion.verify!
end
end
# CLC admin - Champion Portal namespace
class Champions::Admin::BaseController < Champions::BaseController
before_action :require_clc!
end
class Champions::Admin::EventsController < Champions::Admin::BaseController
def pending
@events = Event.pending.for_region(current_champion.region)
end
end
Track all admin actions:
class AdminAction < ApplicationRecord
belongs_to :actor, class_name: 'User' # or Champion for CLC
belongs_to :target, polymorphic: true
# action: 'verified', 'rejected', 'promoted_to_clc', etc.
# details: JSON blob with additional context
end