What is Hanami?
Hanami is a code feedback and grading tool for courses running on the A+ LMS. Course staff use it to read student submissions, annotate code, assess work against per-exercise rubrics, and send the resulting points and feedback back to A+.
A+ remains the system of record for courses, submissions, and grades. Hanami stores course configuration, rubrics, grading assignments, in-progress assessments, feedback documents, preferences, template data, manual-grading state, and encrypted A+ tokens for active browser sessions.
The stack
Section titled “The stack”A single docker-compose.yml runs the whole thing:
| Service | Directory | Stack | Port |
|---|---|---|---|
frontend |
frontend/ |
SvelteKit (Bun) | 3000 |
backend |
backend/ |
Ktor (Kotlin, fat JAR on JRE) | 8088 |
db |
- | Postgres (application data) | 5432 |
docs |
docs/ |
This site (Starlight on nginx) | 3001 |
See Deployment for the quick start and Architecture for how the pieces fit together.
Server-side sessions
Section titled “Server-side sessions”Every request to A+ uses the signed-in user’s personal API token, so Hanami has only the access that A+ grants that user. Ktor encrypts the token in Postgres; the browser receives a random session identifier with no embedded credentials. Staff sign in either by pasting their token or automatically via an A+ course menu item (Sign-in and LTI).
The grading workflow
Section titled “The grading workflow”- Teachers define rubrics per exercise: categories with max points and preset phrases carrying point deltas, in each course language.
- Grading happens in an exercise-first queue. Each entry groups a student or group with their submissions, submitted code, and autograder output. Graders can link annotations to rubric categories, select preset phrases, and override the calculated category points.
- Assistants and teachers save drafts and mark assessments ready; only a teacher can send. Sending posts a new graded submission (points plus the composed feedback HTML) to A+.
The teacher and assistant guides cover the workflow in detail.
Where to start
Section titled “Where to start”- If you grade student work, start with the assistant guide.
- If you configure courses, rubrics, or grading assignments, use the teacher guide.
- If you operate Hanami, follow Deployment and Course configuration.
- If you contribute code, choose a development loop in Getting started. For realistic manual QA, use the comprehensive local test course.