Skip to content

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.

  1. Sign in with the A+ account that teaches the course.
  2. On the Hanami front page, choose New course.
  3. Select the A+ course. Hanami lists only courses you teach that are not already configured.
  4. Create an empty configuration or copy compatible settings from another Hanami course.
  5. 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.

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.

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.

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.

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.

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;gradingTags

Use 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.

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.