Skip to content

Program Management

FriendAssKicker edited this page Jun 26, 2026 · 1 revision

Program Management

The platform supports a multi-tenant structure organized by cohort or program run, called a Batch. Scoping FAQs, community feeds, integrations, and support logs to specific batches allows multiple programs or calendar runs to share a single codebase and database cluster without mixing user data or configurations.


Batches (Program Runs)

Every batch document (Batch model) defines a specific cohort lifecycle:

1. Program Statuses

  • draft: The program is being configured by admins. It is invisible to the public portal.
  • active: The program is live. Students can see it, enroll (if open), and access its resources.
  • completed: The program run has concluded. Content is read-only for students.
  • archived: Hidden from standard dashboards, preserved for historical reporting and audit.

2. Enrollment Control

Admins can define the enrollment behavior per program:

  • Open (open): Any authenticated student can self-enroll in the batch.
  • Invite Only (invite_only): Self-enrollment is disabled. Students must receive an email invite or admin approval.
  • Closed (closed): Strictly managed. Staff must manually import or link students to the program.
  • Enrollment Cap: A maximum student count (maxEnrollment). The API rejects self-enrollments once the count is reached.

Program Feature Flags

Feature flags (FeatureFlag model) enable or disable specific parts of the user interface (e.g. Community, Support tickets, Zoom recordings, AI summaries) at runtime.

1. Global vs. Per-Program Overrides

  • Global Flag: A document with batchId: null represents the system default.
  • Program Override: A document referencing a specific batchId overrides the global default for that cohort.
  • Lookup Resolution: The system checks for a cohort-specific override first, falling back to the global default if none exists.

Example compound index setup:

{ "key": 1, "batchId": 1 } // Enforces uniqueness of a flag key per cohort

Courses and Curriculum

A program run contains multiple courses (Course model):

  • Cohort Scoping: Courses are associated with a specific batchId.
  • Lectures & Material: Tracks lecture schedules, topics, and resource download links.
  • Dynamic Content: Connected to the Zoom integration to sync meeting records with the appropriate course structure.

Registration and Onboarding

  • Registration Configuration: Admins configure custom forms, metadata fields, and email templates per batch.
  • Welcome Packages: Custom welcome messages, orientation schedules, and start-up checklists are loaded dynamically when a student enters their active program portal.
  • Audit Logging: Any changes to student enrollment status, program switches, or onboarding steps are logged in OnboardingAuditLog for verification.

Clone this wiki locally