Overview
When you create a program, you select which modules to include. Each module:- Corresponds to a specific view/page in registration
- Can be required (must complete) or optional
- Has a sequence number determining display order
- May have additional configuration settings
Selecting Modules
At program creation: Choose modules on the newprogram form at/manage/newprogram
After creation: Edit the “Program modules” field at /admin/program/program/ (select your program)
Customize module names: Change displayed names at /admin/program/programmodule/
Module Categories
Modules are organized by URL pattern:- Student:
/learn/[program]/[instance]/* - Teacher:
/teach/[program]/[instance]/* - Management:
/manage/[program]/[instance]/* - Onsite:
/onsite/[program]/[instance]/* - Volunteer:
/volunteer/[program]/[instance]/*
Configuring Module Behavior
After associating a module with a program, a program module object is created. Edit these at:Common Settings
Sequence Number (seq)
Sequence Number (seq)
Determines display order. Modules are shown in increasing sequence number order.Lower numbers appear first in registration.
Required
Required
When checked, users must complete this module before accessing the main registration page (if “Force show required modules” is enabled).Required modules show a checkmark when completed.
Required Label
Required Label
Custom text to clarify requirements beyond “required” or “not required”.Example: “Required for outside teachers” on the teacher biography module.
Additional Configuration
Many modules have extended settings:- ClassRegModuleInfo (teacher class registration):
/admin/modules/classregmoduleinfo/ - StudentClassRegModuleInfo (student class registration):
/admin/modules/studentclassregmoduleinfo/ - Tags:
/admin/tagdict/tag/- Advanced customization (see Tags section)
Student Modules
Modules for student registration workflow:StudentRegCore
Required for student registration. Provides the main registration page at/learn/[program]/[instance]/studentreg.
Settings (StudentClassRegModuleInfo):
Progress Mode
Progress Mode
0: Don’t show registration steps1: Show as checkboxes2: Show as progress bar
Force Show Required Modules
Force Show Required Modules
When checked, students must complete all required modules before accessing the main page.When unchecked, students can complete steps in any order but must finish all required steps before confirming registration.
Confirmation & Buttons
Confirmation & Buttons
allowed_student_types: Control which account types can access student registration (default: student and administrator)
RegProfileModule (Student)
Prompts students to fill out profile information: contact details, parent/emergency contacts, school, grade. Automatically duplicates profile if student filled one out within 5 days (e.g., new account). Key Tags:School & Contact Fields
School & Contact Fields
require_school_field: Make school requiredrequire_guardian_email: Require parent emailallow_guardian_no_email: Add “My parents don’t have email” checkboxrequest_student_phonenum: Require student phone number
Grade Level
Grade Level
allow_change_grade_level: Let students change grade after first profile (default: locked)student_grade_options: JSON list of grade choices (default: 7-12)show_student_graduation_years_not_grades: Show graduation years instead of grade numbers
Optional Fields
Optional Fields
student_medical_needs: Show medical needs text boxshow_studentrep_application: Show student rep application (set to “no_expl” to hide explanation)show_student_tshirt_size_options: Ask for T-shirt sizeshow_student_vegetarianism_options: Ask about dietary restrictionsask_student_about_post_hs_plans: Ask about post-high school plansask_student_about_transportation_to_program: Ask how they’re getting to the program
StudentClassRegModule
The core class selection module. Displays catalog, schedule, and registration pages. Settings (StudentClassRegModuleInfo):Capacity Controls
Capacity Controls
- Enforce max: Unchecked allows students to sign up for full classes
- Class cap multiplier: Apply linear function to capacities (e.g., 0.5 for half-full)
- Class cap offset: Add fixed number to all capacities (e.g., 3 for 3 extra students per class)
Registration Behavior
Registration Behavior
- Signup verb: Which registration type to use (default: “Enrolled” for first-come first-served)
- Use “Applied” for teacher-selected admission
- Create custom types as needed
- Use priority: Allow students to select multiple classes per timeslot, annotated with priority order
- Priority limit: Maximum number of simultaneous classes students can register for (when using priority)
Catalog Display
Catalog Display
- Register from catalog: Show “Register for section X” buttons in catalog (JavaScript-enabled)
- Visible enrollments: Unchecked hides enrollment counts in public catalog
- Visible meeting times: Unchecked hides meeting times in public catalog
- Show emailcodes: Unchecked hides codes like “E464:” before class titles
- Show unscheduled classes: Unchecked hides classes without meeting times
- Temporarily full text: Customize label on disabled “Add class” buttons for full classes
studentschedule_show_empty_blocks: Show timeslots without classes (default: true)
StudentClassRegModule Alternatives
LotteryStudentRegModule
LotteryStudentRegModule
Lottery registration where students select classes of interest for later assignment.Workflow:
- Enable only this module during lottery phase
- Students choose classes
- Run lottery assignment script
- Remove this module
- Add StudentClassRegModule for first-come first-served
StudentRegTwoPhase
StudentRegTwoPhase
New two-phase lottery interface:Step 1: Star interested classes in searchable catalogStep 2: Rank priorities for each timeslotConfiguration:
- Set
priority_limitin StudentClassRegModuleInfo - Disable after lottery to return to normal registration page
- Students can then make schedule edits
/learn/<program>/studentreg2phase- Landing page/learn/<program>/view_classes- Filterable catalog (replaces /catalog)/learn/<program>/mark_classes- Step 1: Star classes/learn/<program>/rank_classes- Step 2: Rank priorities
StudentRegPhaseZero
StudentRegPhaseZero
Pre-lottery to limit program size when demand exceeds capacity.
- Based on
program_size_by_gradetag - Students submit non-binding interest
- Can form groups of up to 4 (all selected or none)
- Provides templates for lottery winners/losers
- Keep enabled after lottery to show situational messages
FinancialAidAppModule
Recommended for all programs. Students can request financial aid during registration.- Admins receive email on submission
- Students with free/reduced lunch auto-approved
- Review at
/admin/under “Financial aid requests” - Grant aid as percentage or dollar amount
- Approve in bulk with FinaidApproveModule
StudentExtraCosts
Optional items for purchase: meals, T-shirts, merchandise.- “Buy one”: Quantity 0 or 1
- “Buy many”: Any quantity
- Configure via Line Item Management Module
- Can make items required (forces selection)
- Custom pricing: Check “Is custom?” for student-entered amount
- Sibling discount appears here if enabled
- Counts shown on dashboard
CustomFormModule (Student)
Add custom forms to registration for data not collected by standard modules. Setup:- Create form at
/customforms/ - Note the form ID from
/customforms/view/[ID] - Create tag
learn_extraform_idwith form ID as value - (Optional) Associate tag with specific program
- View results at
/customforms/
StudentAcknowledgementModule
Requires students to agree to conditions (code of conduct, terms, etc.) via form submission.StudentLunchSelection
For programs with lunch constraints. Forces students to choose lunch period if they have both morning and afternoon classes. Reduces confusion about lunch requirements.StudentRegConfirm
Adds “Confirm Registration” as a step that requires clicking the Confirm button. Doesn’t provide functionality, just a visual reminder to confirm.DonationModule
Solicit donations for Learning Unlimited. Default settings:- Text: “Donation to Learning Unlimited”
- Options: 20, $50
donation_settings tag (JSON):
/learn/<program>/<instance>/donation.
StudentJunctionAppModule
Global application for the program. Typically used with TeacherReviewApps for class-specific questions.FormstackMedLiabModule
Integrate Formstack for sensitive information (medical insurance, liability). Setup:- Create form on Formstack
- Create tags:
formstack_idandformstack_viewkey(program-specific) - Configure Formstack to POST to
/learn/[program]/[instance]/medicalpostback581309742
SurveyModule (Student)
Online surveys appear at/learn/[program]/[instance]/survey.
- Controlled by “Survey” student deadline
- Create surveys at
/manage/[program]/[instance]/surveys - Default filter: Only students who registered for classes (
classreg) - Override with
survey_student_filtertag (comma-separated groups)
StudentOnsite
Mobile-friendly onsite webapp for students. Features:- View schedule
- Make class changes
- Get directions to classes
- Fill out surveys
- Get Google Cloud API key
- Set
google_cloud_api_keytag - Set
program_centertag:{lat: 37.427490, lng: -122.170267} - Add “Lat/Long” resource to each classroom with coordinates
switch_time_program_attendance(HH:MM): Use program attendance after this time (min 5 check-ins)switch_lag_class_attendance(minutes): Use class attendance after this many minutes into class (min 1 check-in)
student_webapp_isstep = “True” to show in registration checklist
Views:
/learn/<program>/studentonsite- Main webapp & schedule/learn/<program>/onsitemap- Google maps with walking directions/learn/<program>/onsitecatalog- Class catalog with enrollment/learn/<program>/onsitesurvey- Survey interface/learn/<program>/onsitedetails- Section details
Teacher Modules
Modules for teacher registration workflow:TeacherRegCore
Required for teacher registration. Displays main teacher registration page with summary of other modules.RegProfileModule (Teacher)
Prompts teachers for profile information: contact, affiliation, graduation year. Hide fields with tag:teacherreg_hide_fields: Comma-separated list (e.g., “purchase_requests”)
teacherreg_label_purchase_requests: Override “Planned Purchases” labelteacherreg_help_text_purchase_requests: Override help textteacherreg_label_message_for_directors: Override “Message for Directors” labelteacherreg_help_text_message_for_directors: Override help text
teacherinfo_shirt_options= “False”: Hide shirt size/typeteacherinfo_shirt_type_selection= “False”: Hide fitted vs straight cut choice
TeacherClassRegModule
Core module for teachers to register and view classes. Upload files, create web pages, import from previous programs. Requires timeslots to be set up (establishes possible class lengths). Tags:Difficulty Field
Difficulty Field
teacherreg_difficulty_label: Change “Difficulty” field nameteacherreg_difficulty_choices: JSON list of choicesLeft value appears in catalog, right value shown to teachers.
allow_class_import: Enable importing classes from previous programs
AvailabilityModule
Teachers indicate availability for each timeslot. Override with “Force Availability” feature in scheduler or schedule via “Manage Class” page.TeacherBioModule
Brief biography and optional photo upload. Linked from student catalog. URL:/teach/teachers/[username]/bio.html
TeacherEventsModule
Teachers sign up for training and/or interview time slots. Only include if you want all teachers to register for these events. Configure event slots on management side with TeacherEventsModule management.TeacherPreviewModule
Teachers can:- See summary of other teachers’ classes (including unreviewed/rejected)
- Preview their own class in catalog format:
/teach/[program]/[instance]/catalogpreview/[class ID]
TeacherQuizModule
Show quiz during registration to ensure teachers have logistical knowledge. All questions must be answered correctly to proceed. Setup:- Create custom form at
/customforms/with correct answers - Note form ID
- Create tag
quiz_form_idwith form ID - (Optional) Associate with specific program
TeacherAcknowledgementModule
Requires teachers to confirm they will attend. Checkbox form to convey seriousness and reduce no-shows.TeacherReviewApps
Teachers create application questions for their classes (optional for teachers, required for students once created).TeacherAdmissionsDashboard
Interface for teachers to review applications for their classes. See Student Applications for details.SurveyModule (Teacher)
Online surveys at/teach/[program]/[instance]/survey.
- Controlled by “Survey” teacher deadline
- Create at
/manage/[program]/[instance]/surveys - Default filter: Teachers who submitted a class (
class_submitted) - Override with
survey_teacher_filtertag
TeacherOnsite
Mobile-friendly onsite webapp for teachers. Features:- View schedule
- Take attendance
- Get directions
- Fill out surveys
- View student survey results
teacher_webapp_isstep = “True” to show in registration checklist
Views:
/teach/<program>/teacheronsite- Main webapp & schedule/teach/<program>/onsitemap- Google maps with directions/teach/<program>/onsitesurvey- Surveys & student results/teach/<program>/onsitedetails- Section details/teach/<program>/onsiteroster- Roster & attendance
TeacherModeratorModule
Teachers indicate interest in moderating (or observing, TA-ing, etc.). Customize term with tag:Moderator title
Admins assign moderators via scheduler. Moderators can:
- View section assignments
- Take attendance for assigned sections
Management Modules
Admin tools for program management:AdminCore
Required for all programs. Provides:- Program dashboard
- Deadline management
- Registration type management
- Lunch constraints control
AdminClass
Recommended for all programs. Frequently used class management:- “Manage class” page (scheduling, co-teachers, open/close sections, cancel with email)
- Class review/approval (via email links)
- Bulk approval by class IDs
JSONDataModule
Required for all programs. Provides data for dashboard statistics, Ajax scheduling, and other modules.AdminVitals
Displays program statistics on dashboard.CommModule
Email communication with participants. Features:- Select recipients (basic or combination lists)
- Recipient checklist to preview
- Rich text editor (bold, lists, tables, colors, images)
- Template tags dropdown for dynamic content
- HTML email support
Combination lists often don’t contain expected users due to technical limitations. Verify recipient count looks reasonable before sending.
ResourceModule
Essential for most programs. Manage:- Timeslots: Required for teacher registration. Set up immediately. Can import from previous program. Don’t delete after creation.
- Classrooms: Needed for scheduling
- Resource types: Options for teachers on class creation (projector, whiteboard, etc.)
- Floating resources: Equipment assigned to individual classes
/admin/resources/resourcetype.
AJAXSchedulingModule
Main scheduling interface at/manage/[program]/[instance]/ajax_scheduling.
Features:
- Grid-based drag-and-drop
- Multi-user support with periodic updates
- Conflict warnings
- Teacher availability enforcement
- Class search and filters
- Comments and class locking
- Green: Can place class
- Green with stripes: Multi-hour class (place at leftmost green square)
- Yellow: Teacher available but teaching another class
- Click class to select (directory or grid)
- Click green square to place
- Hover for tooltips
- Use directory search/filters
- Set comments/locks via upper right pane
- ESC: Unselect class
- F1: Directory tab
- F2: Filters tab
- /: Search box
- DEL: Unschedule selected class
SchedulingCheckModule
Validate schedule after scheduling. Detects:- Teacher conflicts
- Travel time issues
- Missing resources
- Capacity mismatches
ClassFlagModule
Track class review with custom flags (“needs safety review”, “description proofread”, etc.). Setup:- Add flag types at
/admin/program/classflagtype/ - Add to program at
/admin/program/program/ - Add/view flags from edit/manage class pages
ClassSearchModule
Build queries for classes by flag, status, category, etc. Access via “Search for Classes” on management main page.AdminMorph
View site as any user (except administrators).- Access
admin_morphview - Search for user
- Morph to see their perspective
- Click “Unmorph” when done
ListGenModule
Generate user lists with custom fields.- Filter like communications panel
- Select fields (school, grade, emergency contact, etc.)
- Export to HTML (print) or CSV (spreadsheet)
ProgramPrintables
Generate printables:- PDF class catalog
- Student schedules (individual/batch)
- Room schedules
- Teacher schedules
- Rosters
program/modules/programprintables/studentschedule.tex.
Test with small subset before batch generation (can take several minutes).
NameTagModule
Generate nametags for students, teachers, administrators.- Students/teachers: Use filtering options
- Administrators: Manual entry (names and titles)
program/modules/nametagmodule/singleid.html.
AdminMaterials
View and upload documents for classes.- See all teacher-uploaded files
- Upload admin files (per-class or program-wide)
- Low-level management:
/admin/filebrowser/browse
SurveyManagement
Create and manage surveys. Create at/manage/[program]/[instance]/surveys/manage
Types:
- Program-wide questions
- Class-specific questions
AdminReviewApps
Admin review of student applications.- Select students for admission
- View applications and teacher reviews
- Typically teachers do most review work
CreditCardViewer
View payment information:- Student invoices
- Amounts owed and paid
- Payment history
FinaidApproveModule
Bulk financial aid approval interface.CreditCardModule (Stripe)
Accept credit card payments via Stripe. Setup: Contact [email protected] at least 1 month before registration. Configuration:- STRIPE_CONFIG settings (live and test keys)
- Enable module
- Open “Pay for a program” deadline
stripe_settings tag (JSON):
CreditCardModule (Cybersource)
Accept payments via Cybersource hosted order page. MIT only.GroupTextModule
Send text messages via Twilio (contact websupport for setup).- Select users like communications panel
- Respects texting preferences
- Can override for emergencies
- Last-minute lunch changes
- Class cancellations
- Urgent announcements
TeacherEventsModule (Management)
Define time slots for teacher training and interviews.VolunteerManage
Define time slots for volunteers and view signups.StudentBigBoardModule
Real-time student registration statistics. Access: “Student Registration Big Board” on management page or/manage/[program]/[instance]/bigboard
Shows:
- Current registration count
- Classes per timeslot
- Priority assignments
- Fast-loading alternative to dashboard
TeacherBigBoardModule
Real-time teacher registration statistics. Shows:- Registered/approved classes
- Teacher count
- Class-hours
- Class-student-hours
- Recent registrations (last 10 min)
- Current day check-ins
StudentRegPhaseZeroManage
Manage Phase Zero lottery:- Track lottery registration
- Run lottery
- Winners get
OverridePhaseZeroandStudent/Allpermissions
LotteryFrontendModule
Run class registration lottery without web-team.Onsite Modules
Modules for day-of-program operations:OnsiteCore
Required if using any onsite modules. Shows main onsite page linking to other modules. Accessible to admins and special “onsite” user (set password at/admin/users/espuser/).
OnSiteCheckinModule
Record student attendance with two options:- Rapid check-in (
rapidcheckin): Autocomplete name search, submit one at a time - Barcode check-in (
barcodecheckin): Scan IDs from nametags/schedules, batch submission
OnSiteClassList
Scrolling list of open classes for projection or student viewing. Includes class changes grid (classchange_grid): Preferred method for schedule changes.
- Compact display of all classes
- Color codes for capacity (predicted and actual)
- Find student to highlight selections
- Check boxes to modify registration
OnsiteClassSchedule
Morph into student to use regular registration pages for class changes. More flexible but slower than class changes grid. Can request schedule printing (if OnsitePrintSchedules enabled).OnsitePaidItemsModule
Search for user and view purchased items (meals, T-shirts). Only needed if StudentExtraCosts module was used.OnsitePrintSchedules
Unattended automated schedule printing. Setup:- Enable module
- Run
poll_schedules.shon printer computer (modify for OS/program) - Specify printers at
/admin/utils/printer/
OnSiteRegister
Create accounts for walk-in students who haven’t registered online. Assign to classes using OnsiteClassSchedule or class change grid.Volunteer Modules
VolunteerSignup
Volunteer registration form at/volunteer/[program]/[instance]/signup.
- Select available timeslots
- Provide contact information
- Creates account if not logged in
Advanced Configuration: Tags
Tags provide fine-grained control over module behavior. Create at/admin/tagdict/tag/.
Structure:
- Key: Setting name (e.g.,
require_school_field) - Value: Setting value
- Content type: Program (for program-specific) or blank (global)
- Object ID: Program ID (from
/admin/program/program/)
Next Steps
Creating Programs
Set up a new program with the right modules
Student Applications
Configure application-based admission