aethex.live/docs/PHASE_8_ENTERPRISE.md

5.9 KiB

Phase 8: Enterprise & Education - Implementation Guide

Duration: Weeks 34-37 | Complexity: High | Team Size: 2-3 devs

Executive Summary

Phase 8 unlocks webinar, education, and enterprise use cases with specialized tools for professionals: webinar hosting, course creation, organization management, Q&A, and certification.


Phase 8 Goals

  • Webinar hosting with screen sharing
  • Course creation and scheduling
  • Organization/team management
  • Q&A moderation system
  • Certificate/badge issuance
  • Attendance tracking

Key Features

1. Webinar Features (35%)

Setup:
- HD video (720p+ guaranteed)
- Screen sharing (creator only)
- Slide deck integration (PDF)
- Multiple camera angles

Engagement:
- Q&A panel (moderated)
- Live polls
- Chat (professional moderation)
- Breakout rooms (optional)

Post-webinar:
- VOD access control
- Attendee list
- Recording download
- Certification link

2. Course Creation (30%)

Course Structure:
- Modules (units)
- Lessons (individual sessions)
- Assignments (quizzes, tasks)
- Certificates (upon completion)

Features:
- Scheduled lessons
- Lesson calendars
- Progress tracking
- Prerequisites
- Completion requirements

Database:
- Course
- Module
- Lesson
- Assignment
- CourseEnrollment

3. Organization Mgmt (20%)

Features:
- Multi-streamer accounts
- Team role management
- Shared analytics dashboard
- Unified billing
- Branded sub-domains

Roles:
- Org admin
- Course author
- Instructor
- Teaching assistant
- Viewer

4. Certificates (10%)

Features:
- Template design
- Auto-generation on completion
- Digital badge
- Downloadable PDF
- Blockchain verification (optional)

Example:
- "John Doe completed React Advanced Course"
- Issue date, signature, QR code
- Verifiable at platform

Implementation

Database

model Organization {
  id String @id
  name String
  description String?
  logo String?
  subdomain String @unique // org-name.aethex.live
  
  creatorId String
  creator User @relation(fields: [creatorId])
  
  members OrganizationMember[]
  courses Course[]
  webinars Webinar[]
  
  billingEmail String?
  createdAt DateTime
}

model Course {
  id String @id
  organizationId String
  organization Organization @relation(fields: [organizationId])
  
  title String
  description String
  cover String?
  
  modules Module[]
  enrollments CourseEnrollment[]
  
  price Int? // Optional, free if null
  prerequisite String? // Required course ID
  
  createdAt DateTime
}

model Module {
  id String @id
  courseId String
  course Course @relation(fields: [courseId])
  
  title String
  order Int
  lessons Lesson[]
}

model Lesson {
  id String @id
  moduleId String
  module Module @relation(fields: [moduleId])
  
  title String
  description String
  vodId String // From Phase 3 VOD system
  
  duration Int // Minutes
  assignments Assignment[]
  
  createdAt DateTime
}

model CourseEnrollment {
  id String @id
  courseId String
  course Course @relation(fields: [courseId])
  userId String
  user User @relation(fields: [userId])
  
  enrolledAt DateTime
  completedAt DateTime?
  progress Int // Percentage
  
  @@unique([courseId, userId])
}

model Webinar {
  id String @id
  organizationId String
  organization Organization @relation(fields: [organizationId])
  
  title String
  description String
  
  scheduledStart DateTime
  duration Int // Minutes
  
  registrations WebinarRegistration[]
  qnas QA[]
  attendees WebinarAttendee[]
  
  vodId String? // Recorded VOD after
  certificateTemplate String?
}

model WebinarAttendee {
  id String @id
  webinarId String
  webinar Webinar @relation(fields: [webinarId])
  userId String
  user User @relation(fields: [userId])
  
  registeredAt DateTime
  attendedAt DateTime?
  duration Int? // Minutes attended
  
  receivedCertificate Boolean @default(false)
}

model Certificate {
  id String @id
  userId String
  user User @relation(fields: [userId])
  
  courseId String? // Optional, for courses
  webinarId String? // Optional, for webinars
  
  title String // "React Advanced Course Completion"
  issuedAt DateTime
  expiresAt DateTime? // Optional expiration
  
  verificationHash String @unique
}

model QA {
  id String @id
  webinarId String
  
  question String
  askedBy String
  timestamp Int // Seconds into webinar
  
  answer String?
  answeredBy String?
  
  votes Int @default(0) // Upvotes
  status String // PENDING, ANSWERED, HIDDEN
}

Key APIs

Courses:
- POST /api/courses (create)
- GET /api/courses (list)
- POST /api/courses/:id/enroll
- GET /api/courses/:id/progress

Webinars:
- POST /api/webinars (create)
- POST /api/webinars/:id/register
- GET /api/webinars/:id/attendees
- POST /api/webinars/:id/qa

Certificates:
- GET /api/certificates/:userId
- POST /api/certificates/:id/verify
- GET /api/certificates/:id/download

Organizations:
- POST /api/organizations
- PUT /api/organizations/:id
- POST /api/organizations/:id/members

Special Features

Screen Sharing

Tech: WebRTC or Cloudflare Stream
- Creator shares screen
- Mixed with camera in HLS stream
- Shared to 10k+ viewers
- Recorded in VOD

Q&A Moderation

Flow:
1. Attendee types question
2. Goes to moderation queue
3. Moderator approves/rejects
4. Approved q shown to presenter
5. Presenter answers live
6. Answer recorded

Progress Tracking

For learners:
- % of course complete
- Watched which lessons
- Completed which assignments
- Overall progress bar

Success Metrics

  • 100+ organizations
  • 500+ webinars hosted
  • 10k+ course enrollments
  • 5k+ certificates issued
  • $100k+ enterprise revenue

Timeline

Week Focus
34 Course structure, platform
35 Webinar features, Q&A
36 Certificates, progress tracking
37 Organizations, testing, deployment

Completion: Week 37 (by September 12, 2025)
Next: Phase 9 - Scale & Polish

See PHASE_9_SCALE.md