alumni_lookup

Sub-Phase 1.10: Community News & Announcements

Champion Portal Development Sub-Phase 1.10

Estimated Effort: 3–4 weeks
Focus: Admin-managed news/announcements system for Champion Portal dashboard

Prerequisites: Phase 1.9 complete (dashboard placeholder exists)

Related Documents:


Table of Contents

  1. Overview
  2. Why This Sub-Phase Exists
  3. Design Decisions
  4. Internal Sub-Phases
  5. Schema Design
  6. UI Mockups
  7. Admin Architecture
  8. Scope
  9. Definition of Success
  10. Tests to Create
  11. Documentation Updates
  12. Questions Resolved

1. Overview

Phase 1.10 implements the Community News & Announcements system — staff-curated content that gives Champions a reason to return to the dashboard. This replaces the hardcoded placeholder cards in the dashboard’s “From the Belmont Community” section.

After Phase 1.10, the system supports:

Key Distinction: This is curated content (staff/CLC authored), distinct from Phase 3’s discussion boards (Champion-generated posts with comments/threading).


2. Why This Sub-Phase Exists

The “Fresh Content” Problem

From 1.9-pre-beta-polish.md §1.9.4:

The dashboard currently lacks “freshness” — nothing new to see on return visits. A News/Posts section is critical for engagement.

Without fresh content:

Jobs to Be Done Alignment

Job How 1.10 Addresses It
C5: Stay in the Loop Fresh content on every visit; regional news keeps Champions informed
C9: Feel Like I Belong Alumni spotlights, community activity reinforce belonging
L3: Communicate with My City CLCs can post regional announcements

3. Design Decisions

Decisions made during interview (January 2026):

Decision Choice Rationale
Content model Single unified model Flexible fields adapt to content type (story, photo, announcement)
External links Support both link-out AND full content Some posts link to belmont.edu, others have full article
Images Multiple images with carousel Hero image on dashboard card, full carousel on show page
Admin location Split by scope Staff: Lookup Portal (global), CLCs: Champion Portal (regional)
Who can manage Portal Admin+ and CLCs Staff for global, CLCs for their region
Publish workflow Draft + Publish Create drafts, publish when ready
Dashboard display 3 posts + “View all” Clean display with link to full listing
Ordering Pinned + Published date Admin can pin important posts; otherwise newest first
Audience targeting Global OR by Region Posts can target all Champions or specific region(s)
Rich text ActionText (Trix) for both excerpt and full content Basic formatting: paragraphs, bold, italic, links
Tagging Colleges, majors, affinities, champions College UI now; major/affinity UI deferred; champion tagging for spotlights
Analytics Full tracking Views, clicks, likes per Champion
Regional display Same section with badge Regional posts show in “From the Belmont Community” with distinctive badge
Champion mentions Both manual links and structured tags Admin can link to profiles in content AND tag featured champions
Friendly URLs /news/:id/:slug format ID for matching, slug for readability
Likes Simple like button Heart/thumbs up with count, tracks who liked
Image carousel Show page only Dashboard shows hero image, show page has carousel

Relationship to Phase 3 Discussion Boards

Feature Phase 1.10 News Phase 3 Boards
Authors Staff, CLCs Champions
Content type Curated announcements Community discussion
Comments No Yes
Threading No Yes (flat or threaded)
Moderation Admin-only creation Champion posts + moderation
Dashboard display “From the Belmont Community” Regional board feed (future)

These are separate models — discussion board posts may eventually be “elevated” to dashboard, but the news system is distinct.

Regional Posts Display Strategy

Regional posts appear in the same “From the Belmont Community” section as global posts, but with a distinctive badge:

Future Vision: The “Your [Nashville] Community” section on the dashboard is envisioned as a unified hub for all regional content:

For now, regional news shows in “From the Belmont Community” with a badge. Future phases may consolidate regional content into the community section.


4. Internal Sub-Phases

Sub-Phase Name Est. Time Status
1.10.1 Database & Models 1–2 days ✅ Complete
1.10.2 Lookup Portal Admin (Staff/Global) 2–3 days ✅ Complete
1.10.3 Champion Portal Display 2–3 days ✅ Complete
1.10.4 Champion Portal CLC Admin (Regional) 2–3 days ⏸️ Deferred
1.10.5 Likes & Analytics 1–2 days ⏸️ Deferred
1.10.6 Testing & Polish 1–2 days ⏸️ Deferred

Sub-Phase 1.10.1: Database & Models ✅ COMPLETE

Completed: January 5, 2026

Goal: Create the database structure for news posts, images, likes, and analytics.

What Was Implemented:

Deferred from 1.10.1 (per interview):

Key Implementation Notes:

Acceptance Test:

# In rails console:
post = Cp::NewsPost.create!(
  title: "Alumni Spotlight: Sarah Chen",
  excerpt: "'18 grad launches tech startup...",
  status: :published,
  scope: :global,
  author: User.find_by(email: "admin@example.com")
)
post.images.attach(io: File.open("test.jpg"), filename: "test.jpg")
post.published? # => true
post.visible_to?(champion) # => true

Sub-Phase 1.10.2: Lookup Portal Admin (Staff/Global) ✅ COMPLETE

Completed: January 5, 2026

Goal: Staff can create, edit, publish, and manage global news posts.

What Was Implemented:

Authorization:

Key Implementation Notes:

Deferred from 1.10.2 (per interview):

Files Created:

Files Modified:

Acceptance Test:

  1. Portal Admin navigates to Settings → News Posts ✅
  2. Creates new post with title, excerpt ✅
  3. Saves as draft → not visible on Champion dashboard (pending 1.10.3)
  4. Publishes post → status changes, published_at set ✅
  5. Pins post → appears first regardless of date (sorting ready, display pending 1.10.3)

Sub-Phase 1.10.3: Champion Portal Display ✅ COMPLETE

Completed: January 5, 2026

Goal: Champions see news posts on dashboard and can view full posts.

What Was Implemented:

Deferred from 1.10.3 (per interview):

Phase 1.10.3 Additions (Jan 5, 2026):

Files Created:

Files Modified:

Acceptance Test:

  1. Staff publishes global post → all Champions see it ✅
  2. Staff publishes Nashville-only post → Nashville Champions see it ✅
  3. Champion clicks post → view counted, full content displayed ✅
  4. Champion clicks external link → opens in new tab ✅

Sub-Phase 1.10.4: Champion Portal CLC Admin (Regional)

Status: ⏸️ DEFERRED (January 2026)

Reason: CLC administration is being reconsidered as part of the Community Foundation (Phase 1.12). CLCs may become “Community Leadership Council” members associated with Communities rather than Regions. Deferring to align with new community model.

Target: Phase 1.12+ (after Community Foundation establishes the CLC-Community relationship)

Original Goal: CLCs can create regional announcements for their region’s Champions.

Deliverables (Deferred):

Authorization:

CLC Detection:

# Champion is CLC if they have CLC role assignment
# (Assuming CLC role tracking exists or will be added)
current_cp_champion.clc_regions # => [Region<Nashville>, Region<Atlanta>]

Note: CLC role assignment may need to be added if not already implemented. Check existing CLC tracking before implementation.

Acceptance Test:

  1. Nashville CLC logs into Champion Portal
  2. Sees “Admin” or “CLC Tools” in navigation
  3. Creates regional announcement for Nashville
  4. Nashville Champions see it; Atlanta Champions don’t
  5. Staff in Lookup Portal can see and manage the post

Sub-Phase 1.10.5: Likes & Analytics

Status: ⏸️ DEFERRED (January 2026)

Reason: Core news functionality is complete. Likes and analytics are nice-to-have engagement features that can be added later. Prioritizing Community Foundation (1.12-1.14) and Events (1.11) over engagement metrics.

Target: Future (Phase 2+)

Original Goal: Champions can like posts; staff can see engagement analytics.

Deliverables (Deferred):

Like Behavior:

Analytics Dashboard:

┌─────────────────────────────────────────────────────────────────────────┐
│ News Post Analytics                                                     │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│ Post: "Alumni Spotlight: Sarah Chen"                                    │
│ Published: Jan 5, 2026 • Global                                         │
│                                                                         │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐         │
│ │    Views    │ │   Unique    │ │    Likes    │ │   Clicks    │         │
│ │     234     │ │    187      │ │     42      │ │     28      │         │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘         │
│                                                                         │
│ Engagement by Region:                                                   │
│ Nashville ████████████████ 45%                                          │
│ Atlanta   ██████████ 25%                                                │
│ Dallas    ██████ 15%                                                    │
│ Other     ██████ 15%                                                    │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

Acceptance Test:

  1. Champion views post → view recorded
  2. Champion likes post → like count increases, heart fills
  3. Champion unlikes → count decreases, heart unfills
  4. Staff views analytics → sees views, likes, regional breakdown

Sub-Phase 1.10.6: Testing & Polish

Status: ⏸️ DEFERRED (January 2026)

Reason: Core functionality has test coverage from 1.10.1-1.10.3. Additional polish and edge case handling can happen alongside other features.

Target: Ongoing (as part of regular development)

Original Goal: Full test coverage, edge cases, and UI polish.

Deliverables (Deferred):


5. Schema Design

5.1 cp_news_posts Table

create_table :cp_news_posts do |t|
  # Content
  t.string :title, null: false
  t.string :slug, null: false          # URL-friendly title (auto-generated)
  # Note: excerpt uses ActionText (has_rich_text :excerpt)
  # Note: full_content uses ActionText (has_rich_text :full_content)
  t.string :external_link              # Optional URL to external content
  
  # Metadata
  t.string :status, default: 'draft'   # draft, published, archived
  t.string :scope, default: 'global'   # global, regional
  t.boolean :pinned, default: false
  t.datetime :published_at
  
  # Author tracking
  t.string :author_type                # 'User' (staff) or 'Cp::Champion' (CLC)
  t.bigint :author_id
  
  # Analytics (denormalized for performance)
  t.integer :views_count, default: 0
  t.integer :likes_count, default: 0
  t.integer :clicks_count, default: 0  # External link clicks
  
  t.timestamps
end

add_index :cp_news_posts, [:status, :published_at]
add_index :cp_news_posts, [:scope, :status]
add_index :cp_news_posts, [:author_type, :author_id]
add_index :cp_news_posts, :pinned
add_index :cp_news_posts, :slug

5.2 cp_news_post_images Table

create_table :cp_news_post_images do |t|
  t.references :cp_news_post, null: false, foreign_key: true
  t.integer :position, default: 0      # For carousel ordering
  t.string :alt_text                   # Accessibility
  
  t.timestamps
end

add_index :cp_news_post_images, [:cp_news_post_id, :position]

# Images stored via ActiveStorage
# has_one_attached :image on Cp::NewsPostImage

5.3 cp_news_post_regions Join Table

create_table :cp_news_post_regions do |t|
  t.references :cp_news_post, null: false, foreign_key: true
  t.references :region, null: false, foreign_key: true
  
  t.timestamps
end

add_index :cp_news_post_regions, [:cp_news_post_id, :region_id], unique: true

5.4 cp_news_post_colleges Join Table

create_table :cp_news_post_colleges do |t|
  t.references :cp_news_post, null: false, foreign_key: true
  t.references :college, null: false, foreign_key: true
  
  t.timestamps
end

add_index :cp_news_post_colleges, [:cp_news_post_id, :college_id], unique: true

5.5 cp_news_post_likes Table

create_table :cp_news_post_likes do |t|
  t.references :cp_news_post, null: false, foreign_key: true
  t.references :cp_champion, null: false, foreign_key: { to_table: :cp_champions }
  
  t.timestamps
end

add_index :cp_news_post_likes, [:cp_news_post_id, :cp_champion_id], unique: true
add_index :cp_news_post_likes, :cp_champion_id

5.6 cp_news_post_views Table

create_table :cp_news_post_views do |t|
  t.references :cp_news_post, null: false, foreign_key: true
  t.references :cp_champion, null: false, foreign_key: { to_table: :cp_champions }
  t.string :source                     # 'dashboard', 'index', 'direct'
  
  t.timestamps
end

add_index :cp_news_post_views, [:cp_news_post_id, :cp_champion_id]
add_index :cp_news_post_views, :created_at

5.7 cp_news_post_majors Join Table

create_table :cp_news_post_majors do |t|
  t.references :cp_news_post, null: false, foreign_key: true
  t.references :major, null: false, foreign_key: true
  
  t.timestamps
end

add_index :cp_news_post_majors, [:cp_news_post_id, :major_id], unique: true

Note: Table created now; admin UI deferred to future phase.

5.8 cp_news_post_affinities Join Table

create_table :cp_news_post_affinities do |t|
  t.references :cp_news_post, null: false, foreign_key: true
  t.references :affinity, null: false, foreign_key: true
  
  t.timestamps
end

add_index :cp_news_post_affinities, [:cp_news_post_id, :affinity_id], unique: true

Note: Table created now; admin UI deferred to future phase.

5.9 cp_news_post_champions Join Table (Featured Champions)

create_table :cp_news_post_champions do |t|
  t.references :cp_news_post, null: false, foreign_key: true
  t.references :cp_champion, null: false, foreign_key: { to_table: :cp_champions }
  t.integer :position, default: 0      # Display order
  
  t.timestamps
end

add_index :cp_news_post_champions, [:cp_news_post_id, :cp_champion_id], unique: true
add_index :cp_news_post_champions, :cp_champion_id

Purpose: Track Champions featured/mentioned in a post. Enables:


6. UI Mockups

6.1 Dashboard News Section

┌─────────────────────────────────────────────────────────────────────────┐
│ 📰 From the Belmont Community                           [View all →]    │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ [IMAGE]             │ │ [IMAGE]             │ │ [IMAGE]             │ │
│ │                     │ │                     │ │                     │ │
│ ├─────────────────────┤ ├─────────────────────┤ ├─────────────────────┤ │
│ │ 📌 Alumni Spotlight │ │ 🏙️ FOR NASHVILLE    │ │ Campus News         │ │
│ │ Sarah Chen '18      │ │ Champions Meetup    │ │ Bell Tower...       │ │
│ │                     │ │ 15 Champions...     │ │                     │ │
│ │ ❤️ 42               │ │ ❤️ 28               │ │ ❤️ 15               │ │
│ │ Read more →         │ │ Read more →         │ │ Read more →         │ │
│ └─────────────────────┘ └─────────────────────┘ └─────────────────────┘ │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

Dashboard Card Rules:

6.2 News Index Page (/news)

Display: 10 posts per page with standard pagination (not “Load more”)

URL format: /news/:id/:slug (e.g., /news/42/alumni-spotlight-sarah-chen)

┌─────────────────────────────────────────────────────────────────────────┐
│ Community News                                                          │
│ Stories, spotlights, and announcements from the Belmont community       │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ [IMAGE]                                                             │ │
│ │ 📌 PINNED                                                           │ │
│ │ Alumni Spotlight: Sarah Chen '18 Launches Tech Startup              │ │
│ │ After graduating with a degree in Computer Science, Sarah moved...  │ │
│ │ ❤️ 42  •  Jan 5, 2026                                  [Read more →] │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│                                                                         │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ [IMAGE]                                                             │ │
│ │ 🏙️ FOR NASHVILLE                                                    │ │
│ │ Nashville Champions Meetup Recap                                    │ │
│ │ 15 Champions gathered at Belmont's annual homecoming celebration... │ │
│ │ ❤️ 28  •  Jan 3, 2026                                  [Read more →] │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│                                                                         │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ [IMAGE]                                                             │ │
│ │ Campus News: Bell Tower Renovation Complete                         │ │
│ │ The iconic Belmont Bell Tower has been fully restored...            │ │
│ │ ❤️ 15  •  Dec 28, 2025                                 [Read more →] │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│                                                                         │
│                      [← Previous]  Page 1 of 3  [Next →]                │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

6.3 News Show Page (/news/:id/:slug)

URL format: /news/42/alumni-spotlight-sarah-chen

┌─────────────────────────────────────────────────────────────────────────┐
│ ← Back to News                                                          │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │                                                                     │ │
│ │                     [IMAGE CAROUSEL]                                │ │
│ │                                                                     │ │
│ │  ○ ● ○ ○                                                            │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│                                                                         │
│ Alumni Spotlight: Sarah Chen '18 Launches Tech Startup                  │
│ ─────────────────────────────────────────────────────────────────────   │
│ Jan 5, 2026  •  ❤️ 42 likes                                             │
│                                                                         │
│ [❤️ Like]  [🔗 Copy Link]  [↗️ Visit belmont.edu]                        │
│                                                                         │
│ ─────────────────────────────────────────────────────────────────────   │
│                                                                         │
│ After graduating with a degree in Computer Science from Belmont's       │
│ College of Science and Mathematics, Sarah Chen moved to Austin, TX      │
│ where she founded GreenThread, a sustainable fashion marketplace.       │
│                                                                         │
│ "My time at Belmont taught me to think entrepreneurially," Sarah says.  │
│ "The close-knit community gave me the confidence to take risks."        │
│                                                                         │
│ GreenThread has since raised $2.5M in seed funding and now employs      │
│ 15 people, including two other Belmont alumni.                          │
│                                                                         │
│ ─────────────────────────────────────────────────────────────────────   │
│                                                                         │
│ 👤 Featured in this post                                                │
│ ┌───────────┐ ┌───────────┐                                             │
│ │ [Photo]   │ │ [Photo]   │                                             │
│ │ Sarah Chen│ │ Mike Torres│                                            │
│ │ Austin, TX│ │ Austin, TX│                                             │
│ │ View →    │ │ View →    │                                             │
│ └───────────┘ └───────────┘                                             │
│                                                                         │
│ **Related to:** College of Science and Mathematics                      │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

Champion Mentions:

6.4 Lookup Portal Admin — Post Form

┌─────────────────────────────────────────────────────────────────────────┐
│ Settings > News Posts > New Post                                        │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│ Title *                                                                 │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Alumni Spotlight: Sarah Chen '18 Launches Tech Startup              │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│                                                                         │
│ Excerpt / Caption *                                                     │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ After graduating with a degree in Computer Science, Sarah moved to  │ │
│ │ Austin where she founded GreenThread, a sustainable fashion startup │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ ActionText editor (bold, italic, links)                                 │
│                                                                         │
│ Full Content (optional)                                                 │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ [ActionText Editor]                                                 │ │
│ │ B I U 🔗                                                            │ │
│ │                                                                     │ │
│ │ After graduating with a degree in Computer Science from Belmont's   │ │
│ │ College of Science and Mathematics, Sarah Chen moved to Austin...   │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ Leave blank if post should link to external content only                │
│                                                                         │
│ External Link (optional)                                                │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ https://www.belmont.edu/stories/sarah-chen-greenthread              │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ If provided, "Read more" links here instead of show page                │
│                                                                         │
│ ─────────────────────────────────────────────────────────────────────   │
│                                                                         │
│ Images                                                                  │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ [Image 1] [Image 2] [Image 3]  [+ Add Image]                        │ │
│ │ Drag to reorder • First image is hero                               │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│                                                                         │
│ ─────────────────────────────────────────────────────────────────────   │
│                                                                         │
│ Audience                                                                │
│ ○ Global (all Champions)                                                │
│ ○ Specific Regions                                                      │
│   ┌─────────────────────────────────────────────────────────────────┐   │
│   │ ☑ Nashville  ☐ Atlanta  ☐ Dallas  ☐ Los Angeles  ☐ ...         │   │
│   └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│ Related Colleges (optional)                                             │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ ☐ College of Business  ☑ College of Science & Math  ☐ College of...│ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│                                                                         │
│ Featured Champions (optional)                                           │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🔍 Search champions...                                              │ │
│ │ ┌─────────────┐ ┌─────────────┐                                     │ │
│ │ │ Sarah Chen ×│ │ Mike Torres×│                                     │ │
│ │ └─────────────┘ └─────────────┘                                     │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ Tag Champions mentioned or featured in this post                        │
│                                                                         │
│ ─────────────────────────────────────────────────────────────────────   │
│                                                                         │
│ Status: ○ Draft  ○ Published                                            │
│                                                                         │
│ ☐ Pin this post (appears first on dashboard)                            │
│                                                                         │
│ Published Date: [Jan 5, 2026 ▼]                                         │
│                                                                         │
│ ─────────────────────────────────────────────────────────────────────   │
│                                                                         │
│ [Save Draft]  [Preview]  [Publish]                                      │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

6.5 CLC Admin in Champion Portal

┌─────────────────────────────────────────────────────────────────────────┐
│ CLC Tools > Regional Announcements                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│ Create announcements for your region's Champions.                       │
│                                                                         │
│ [+ New Announcement]                                                    │
│                                                                         │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Your Announcements                                                  │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ 📌 Nashville Champions Meetup — Jan 15!      Published  [Edit]      │ │
│ │    Posted Jan 3, 2026 • 28 likes, 156 views                         │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ Welcome New Nashville Champions!             Draft      [Edit]      │ │
│ │    Last edited Jan 4, 2026                                          │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│                                                                         │
│ Note: Global announcements are managed by Belmont staff.                │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

7. Admin Architecture

7.1 Split by Scope

Admin Location Who Can Manage
Lookup Portal /settings/news_posts Portal Admin, Admin Global posts, all regional posts
Champion Portal /admin/news_posts CLCs Their region’s posts only

7.2 Authorization Matrix

Action Admin Portal Admin CLC (Champion) Champion
Create global post
Create regional post Own region only
Edit any post
Edit own regional post
Delete/archive post Own region only
View analytics Own region only
Like post
View posts

7.3 CLC Role Detection

Implementation Note: Need to verify how CLC role is currently tracked. Options:

  1. If CLC role exists on Champion model:
    current_cp_champion.clc_for_region?(region)
    
  2. If CLC tracking needs to be added:
    # New join table: cp_clc_assignments
    # champion_id, region_id, assigned_at
    

Action: Check existing CLC tracking before 1.10.4 implementation.

7.4 Future: Dedicated Admin Subdomain

Per BACKLOG §1.1, a future admin.alumnilookup.com could consolidate:

For now, the split approach (Option C) keeps related functions together:


8. Scope

8.1 In Scope

Area Deliverables
Model Single Cp::NewsPost with flexible fields
Images Multiple images with carousel on show page
Admin (Lookup) Full CRUD for global + all regional posts
Admin (Champion) CLC CRUD for their region’s posts
Display Dashboard section, index page, show page
Engagement Like button with count
Analytics Views, likes, clicks tracking and display
Targeting Global or specific region(s)
Tagging College, major, affinity, champion tags
Workflow Draft → Published status

8.2 Out of Scope (Deferred)

Feature Reason Target
Major/affinity tagging UI Tables created; picker UI deferred Phase 2+
Comments on posts This is curated content, not discussion Phase 3
Scheduled publishing Nice-to-have, not MVP Future
RSS feed import Manual entry is fine for now Future
Instagram API integration Complexity, API limitations Future
Carousel on dashboard cards Start simple with hero image Future
Push notifications for new posts Requires notification infrastructure Phase 4+

9. Definition of Success

9.1 Functional Acceptance Criteria

9.2 Quality Criteria

9.3 Success Metrics (Post-Launch)

Metric Target
Posts published (first month) 10+
Average likes per post 10+
Champions viewing news (% of active) 50%+
Dashboard return visits (with news) +20% vs without

10. Tests to Create

10.1 Model Tests

# test/models/cp/news_post_test.rb
- validates title presence
- validates excerpt presence
- status enum works (draft, published, archived)
- scope enum works (global, regional)
- published scope returns only published posts
- visible_to?(champion) returns correct posts
- pinned posts sort first
- like_count increments correctly
- view_count increments correctly

10.2 Controller Tests

# test/controllers/settings/news_posts_controller_test.rb
- index requires portal_admin
- create saves post as draft
- publish action changes status
- only portal_admin+ can access

# test/controllers/cp/news_controller_test.rb
- index shows published posts
- show increments view count
- respects scope filtering
- requires authenticated champion

# test/controllers/cp/admin/news_posts_controller_test.rb
- requires CLC role
- CLC can only create for their region
- CLC can edit own posts
- CLC cannot edit other region's posts

10.3 Integration Tests

# test/integration/news_post_flow_test.rb
- staff creates and publishes post
- champion sees post on dashboard
- champion likes post
- like count updates
- CLC creates regional post
- regional post only visible to region

11. Documentation Updates

After completing Phase 1.10:


12. Questions Resolved

Question Answer Notes
Content types Single model Flexible fields adapt to content type
External vs hosted Both supported external_link or full_content
Images Optional with fallback Placeholder if no image
Admin location Split by scope Staff: Lookup, CLC: Champion Portal
Who can manage Portal Admin+ and CLCs CLCs for regional only
Publish workflow Draft + Publish No scheduled publishing
Dashboard display 3 + “View all” No carousel on dashboard
Ordering Pinned + date Pinned first, then newest
Audience targeting Global or regional Multi-region supported
Discussion board relation Separate models News ≠ discussion posts
Rich text ActionText (Trix) Basic formatting only
Multiple images Yes, carousel on show Hero on dashboard card
Analytics Full tracking Views, likes, clicks
Likes Yes Simple like with count
Tagging Colleges now, champion tags Major/affinity UI deferred (tables ready)
URLs Friendly slug format /news/:id/:slug
Regional display Same section with badge “🏙️ FOR [REGION]” badge

Files to Create

New Files

Files to Modify


Appendix: Activity Events to Add

Event Type When Recorded Metadata
news_post_viewed Champion views show page post_id, source
news_post_liked Champion likes post post_id
news_post_unliked Champion unlikes post post_id
news_post_link_clicked Champion clicks external link post_id, url

Document created: January 4, 2026 Interview completed with user before spec creation