Courses
A course is a collection of problems and optional content pages, organised by topic, week, or class. Students access a course at /c/<course-id>; its overview is the special index page.
Creating courses
Admins create courses by asking the assistant ("create a course called Graphs") — there is no form UI for it yet (roadmap). Once a course exists, its maintainers can fill it: problems and pages via the assistant or by hand.
Access model
Three roles control who can do what:
| Role | Who | What they can do |
|---|---|---|
| Admin | Server-wide flag on the user account | Everything, every course |
| Maintainer | Added per course by an admin | Edit that course's problems, files, and pages; review its student submissions; use the assistant |
| Student | Member of a group assigned to the course | View the course, submit solutions |
A signed-in user with none of these roles sees a holding page until an admin adds them to something.
Groups and assignments
Students access courses through groups — a group is your class:
- An admin creates a group and adds members (bulk-paste emails at
/admin/groups) - The admin assigns the group to a course, optionally with a due date
- Every member of that group can now access the course
Unknown email addresses get an account immediately, so you can enroll a whole class before anyone has logged in — they're matched on first GitHub login. Assignments and invitations send email notifications (if SMTP is configured).
Maintainers
Maintainers can edit a course's content and view its student submissions, but cannot manage groups or other courses. Add them at /admin/courses by email — same invite-before-login behavior as groups.
Audit log
Every edit — file saves, renames, deletions, settings changes, everything the assistant does — is logged with who, what, and when. Review it at /admin/audit.