alumni_lookup

Feature 6: Messaging (Phase 4)

⚠️ PLANNING DOCUMENT - This describes features that are NOT YET IMPLEMENTED.

Phase: This feature is planned for Phase 4 of Champion Portal development.


Overview

Direct messaging enables Champions to connect one-on-one, separate from public discussion boards.


Implementation Options

Option A: In-Portal Messaging

Full messaging system built into the Champion Portal.

Pros:

Cons:

Features:

Option B: Masked Email Relay

Messages sent through email, with addresses masked.

Pros:

Cons:

Flow:

  1. Champion A clicks “Message” on Champion B’s profile
  2. Form opens to compose message
  3. Message sent via email from noreply@champions.bualum.co
  4. Champion B replies to email
  5. Reply delivered to Champion A’s email

Option C: LinkedIn Integration

Leverage existing LinkedIn messaging.

Pros:

Cons:


Phase 4: Start with Option B (Masked Email Relay)

Future: Evolve to Option A (In-Portal) if demand warrants


Messaging Features (In-Portal - Future)

Inbox

View Description
All Messages Complete conversation list
Unread Conversations with unread messages
Archived Conversations moved to archive

Conversation Thread

┌─────────────────────────────────────────────────────────────┐
│ [Photo] Champion Name                              [Close]  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ [Their message bubble - left aligned]            11:30 AM   │
│                                                             │
│            [Your message bubble - right aligned]  11:32 AM  │
│                                                             │
│ [Their message bubble - left aligned]            11:35 AM   │
│                                                             │
├─────────────────────────────────────────────────────────────┤
│ [Attachment] [Type your message...          ] [Send]        │
└─────────────────────────────────────────────────────────────┘

Features


Privacy & Safety

Contact Preferences

Respect profile settings:

Blocking

Reporting


Notifications

In-App

Email

Push (Future)


Required Decisions


Technical Notes

Email Relay Implementation

# Masked email approach
class ChampionMessage < ApplicationRecord
  belongs_to :sender, class_name: 'Champion'
  belongs_to :recipient, class_name: 'Champion'
  
  after_create :send_notification_email
  
  private
  
  def send_notification_email
    ChampionMailer.new_message(self).deliver_later
  end
end

# Generate reply token for threading
def reply_token
  "msg-#{id}-#{SecureRandom.hex(8)}"
end

In-Portal Schema (Future)

# Conversation
- id
- created_at
- updated_at

# ConversationParticipant
- conversation_id
- champion_id
- last_read_at
- archived (boolean)

# Message
- conversation_id
- champion_id (sender)
- body
- read_at
- deleted_at
- created_at