Course configuration
Each Hanami course points to one course on the deployment’s configured A+ instance. A teacher creates and maintains the configuration; assistants can use the course but cannot change its settings.
Add a course
Section titled “Add a course”- Sign in with the A+ account that teaches the course.
- On the Hanami front page, choose New course.
- Select the A+ course. Hanami lists only courses you teach that are not already configured.
- Create an empty configuration or copy compatible settings from another Hanami course.
- Review the draft, then choose Create.
Copying can bring over languages, template settings, visible tags, and graders. Hanami omits tags and staff that do not exist in the target course and reports what it left out.
The course’s URL slug is fixed after creation. The display name and other settings remain editable.
Configure the course
Section titled “Configure the course”Open the course’s Settings tab. Work through the sections in this order:
| Section | Configure |
|---|---|
| General | Display name, course languages, default language, syntax highlighting, and whether the course is publicly listed. |
| Integration | A+ course structure URL and the discovered A+ sign-in status. |
| Code templates | Which starter-code files Hanami retains and uses to mark unchanged lines during review. |
| Tag visibility | Which A+ tags assistants may see. Teachers always see every snapshotted tag. |
| Graders | Grading team, grading languages, feedback ownership tags, and grading claim tags. |
Save changes before refreshing A+ tags, refreshing the template catalog, or opening an import dialog. If someone else saves first, Hanami reloads the newer revision so you can apply your changes again.
Languages and highlighting
Section titled “Languages and highlighting”The first course language is the default for rubric phrases and composed feedback. A grader’s languages must match values from this list exactly.
Syntax-highlighting languages control which Shiki grammars Hanami loads for submitted files. An empty selection keeps the files readable as plain text. When automatic template extensions are enabled, this selection also decides which source extensions Hanami retains from template archives.
A+ tags and graders
Section titled “A+ tags and graders”Choose Refresh from A+ after adding or changing course tags in A+. The
refresh also updates the course’s LTI launch URL. If the Hanami menu item was
removed in A+, the status changes to not configured.
Add graders by exact email address. Hanami asks A+ to resolve the address, then stores the A+ user id rather than the email. For each grader:
- Grading languages steer automatic assignment for students carrying a matching language tag.
- Feedback ownership tags decide which students appear in that grader’s feedback work.
- Grading claim tags reserve matching grading work for that grader and take priority over language matching.
After changing tags or graders, open Grading, choose Submissions, and check the unassigned count for each rubric-backed assignment.
Code templates
Section titled “Code templates”Set the course structure URL to the JSON published with the A+ course. Hanami uses it to map assignments into modules and discover template archives.
The template catalog is checked on review when its cached manifest is older
than TEMPLATE_CATALOG_FRESH_SECONDS, which defaults to six hours. Hanami uses
the previous catalog for up to TEMPLATE_CATALOG_MAX_AGE_SECONDS (24 hours by
default) while a deduplicated refresh runs in the background. Teachers can
also choose Refresh catalog in Settings. A catalog refresh reads metadata
only; Hanami downloads a module archive when a mapped assignment is opened for
review.
Template archives are stored in Postgres after download. The configured source extensions and excluded path segments decide which files are retained. To retain no template files, turn off automatic extension selection and leave the manual extension list empty.
Import and export
Section titled “Import and export”The Settings page can transfer the complete configuration as JSON or only the grader list as semicolon-separated CSV. JSON import replaces all editable settings. CSV uses this header:
email;languages;feedbackTags;gradingTagsUse the course settings JSON API for
supported automation. The API reference documents the complete writable
schema, optimistic concurrency, validation errors, and the advanced
manualGradingExercises field.
One A+ instance per deployment
Section titled “One A+ instance per deployment”Every configured course must exist on the A+ instance selected by
APLUS_BASE_URL. Hanami lists a stored course as unavailable when it cannot be
found on that instance. Run separate Hanami deployments for courses hosted by
different A+ instances.