Skip to main content

Overview

This guide will walk you through setting up ESP Website and creating your first program. You’ll learn how to:
  • Access the admin interface
  • Create a new program
  • Configure program modules
  • Set up time blocks and resources
  • Enable student and teacher registration
If you’re setting up a local development environment, start with the Installation Guide first.

Prerequisites

Before you begin, ensure you have:
  • A running ESP Website instance (Docker or production)
  • Admin/superuser access to the site
  • Basic understanding of your program structure (dates, time slots, etc.)

Step 1: Create a Superuser Account

1

Access the container

If you’re using Docker, open a terminal and run:
docker compose exec web python esp/manage.py createsuperuser
You’ll be prompted to enter:
  • Username
  • Email address
  • Password (entered twice)
2

Verify access

Navigate to http://localhost:8000/admin and log in with your credentials.You should see the Django admin interface with access to all models.
Keep your superuser credentials secure. These provide full access to your ESP Website installation.

Step 2: Create Your First Program

1

Navigate to program creation

Go to http://localhost:8000/manage/newprogram or click on the “Programs” section in the admin interface.
2

Fill out program details

Complete the program creation form with the following information:
  • Program name: e.g., “Splash 2026”
  • Program type: Choose from Splash, HSSP, or create a custom type
  • URL identifier: Short name used in URLs (e.g., “Splash”)
  • Instance identifier: Specific instance (e.g., “2026”)
  • Start date: When your program begins
  • End date: When your program ends
  • Registration start: When registration opens
  • Registration end: When registration closes
Select which modules to enable for your program:Essential Student Modules:
  • StudentRegCore (required for student registration)
  • StudentClassRegModule (class browsing and enrollment)
  • RegProfileModule (student profile editor)
Essential Teacher Modules:
  • TeacherRegCore (required for teacher registration)
  • TeacherClassRegModule (class creation)
  • AvailabilityModule (teacher availability)
Essential Admin Modules:
  • AdminCore (required)
  • AdminClass (class management)
  • AJAXSchedulingModule (visual scheduler)
  • Program cost: Base registration fee
  • Sibling discount: Optional discount for families
  • Financial aid: Enable financial aid applications
3

Create the program

Click “Create Program” to save your new program.You’ll be redirected to the program management dashboard.
Your program is now created! You can access it at http://localhost:8000/manage/[program]/[instance]/

Step 3: Configure Time Blocks and Resources

Before teachers can create classes, you need to set up when classes can meet and where they can be held.
1

Access resource management

From your program dashboard, click “Manage Resources” or navigate to:http://localhost:8000/manage/[program]/[instance]/resources
2

Create time blocks

Click “Manage Times” to create time slots for classes.
Start: 2026-03-14 09:00:00
End:   2026-03-14 10:00:00
Create as many time blocks as needed for your program schedule.
3

Add classrooms

Click “Manage Rooms” to add classroom resources.For each room, specify:
  • Room name/number: e.g., “Room 101”
  • Capacity: Maximum students
  • Resource types: Available equipment (projector, whiteboard, etc.)
You can bulk import rooms using the CSV upload feature if you have many classrooms.
4

Configure resource types (optional)

Create resource types for special equipment:
  • Projectors
  • Computers
  • Lab equipment
  • Outdoor spaces
Teachers can request these when creating classes.

Step 4: Configure Program Settings

Customize your program’s behavior with tags and module settings.
1

Access program settings

From the program dashboard, click “Edit Program Settings” or go to the admin panel:http://localhost:8000/admin/program/program/
2

Configure module settings

Adjust settings for individual modules:Student Class Registration:
  • Enforce max capacity
  • Class cap multiplier (for soft caps)
  • Visible enrollments (show class fullness)
  • Visible meeting times
Teacher Class Registration:
  • Allow class imports from previous programs
  • Require class approval
  • Maximum class duration
3

Set up tags (optional)

Tags provide fine-grained control over program behavior. Common tags:
Common Tag Examples
require_school_field: Make school field required
allow_change_grade_level: Let students update grade
teacherreg_difficulty_choices: Customize difficulty levels
student_grade_options: Specify allowed grade levels
Add tags at: http://localhost:8000/admin/tagdict/tag/

Step 5: Set Registration Deadlines

Control when different registration phases open and close.
1

Access deadline management

From the program dashboard, click “Manage Deadlines”.
2

Configure teacher deadlines

Set deadlines for teacher registration phases:
Type: Teacher Registration
Opens: 2 weeks before program
Closes: 1 week before program
3

Configure student deadlines

Set deadlines for student registration:
Type: Student Registration
Opens: 1 week before program
Closes: 1 day before program
4

Set payment deadlines (if applicable)

Payment Deadline
Type: Pay for a program
Opens: When registration opens
Closes: Day before program
Deadlines control access to different parts of the registration process. Students and teachers can only access modules during their active deadline periods.

Step 6: Schedule Classes

Once teachers have submitted classes, use the AJAX scheduler to assign them to rooms and times.
1

Review and approve classes

Navigate to the program dashboard and click “Manage Classes”.Review submitted classes and approve them for scheduling.
2

Open the scheduler

Click “AJAX Scheduling Module” from the program management page.You’ll see a grid interface with:
  • Rooms (rows)
  • Time blocks (columns)
  • Unscheduled classes (sidebar)
3

Schedule classes

To schedule a class:
  1. Click on a class in the sidebar to select it
  2. Green cells indicate valid placement locations
  3. Yellow cells show teacher conflicts
  4. Click a green cell to place the class
Use keyboard shortcuts:
  • ESC: Deselect class
  • DEL: Unschedule selected class
  • F1: Switch to directory
  • F2: Switch to filters
  • /: Focus search box
4

Verify the schedule

Check for scheduling errors in the upper-right panel.Common issues:
  • Teacher conflicts (teaching multiple classes at once)
  • Room capacity exceeded
  • Teacher not available at scheduled time

Step 7: Enable Student Registration

Now that classes are scheduled, students can register!
1

Verify student deadlines

Ensure the “Student Registration” deadline is open.
2

Test student flow

Create a test student account and walk through registration:
  1. Navigate to http://localhost:8000/learn/[program]/[instance]/studentreg
  2. Fill out the student profile
  3. Browse the class catalog
  4. Register for classes
  5. View your schedule
Use the “User Morphing” admin module to view the site as different users without logging out.
3

Monitor registration

Track registration progress from the program dashboard:
  • Number of registered students
  • Number of confirmed registrations
  • Class enrollment statistics
  • Payment status

Step 8: Communications

Stay in touch with participants using the built-in communications system.
1

Access communications panel

From the program dashboard, click “Communications Panel”.
2

Select recipients

Choose who should receive your message:
  • All registered students
  • Students in specific classes
  • All teachers
  • Teachers teaching specific subjects
  • Custom combinations using Boolean logic
Always verify the recipient count before sending. Use the “Recipient Checklist” to see specific users.
3

Compose and send

Use the rich text editor to compose your message:
  • Bold, italic, underline formatting
  • Lists and tables
  • Template tags (student name, class info, etc.)
  • Images from external sources
Click “Send Email” when ready.

Next Steps

Program Modules Guide

Learn about all available modules and how to configure them

Advanced Scheduling

Master the AJAX scheduler with advanced techniques

Payment Processing

Set up Stripe or Cybersource for accepting payments

Customization

Customize themes, templates, and program behavior with tags

Common Issues

Check:
  • Is the “Student Class Signup” deadline open?
  • Are classes approved and scheduled?
  • Is the StudentClassRegModule enabled?
  • Are classes marked as “accepted” status?
Check:
  • Is the “Teacher Class Creation” deadline open?
  • Is the TeacherClassRegModule enabled?
  • Have time blocks been created?
  • Does the teacher have the correct permissions?
Check:
  • Is the teacher available at that time?
  • Does the room have sufficient capacity?
  • Is the class duration a valid length?
  • Are there any existing conflicts?
Check:
  • Email configuration in local_settings.py
  • SMTP server credentials
  • Email queue (check /admin/dbmail/emailrequest/)
  • Run python manage.py send_email_proc to process queue

Getting Help

If you run into issues:

Build docs developers (and LLMs) love