-
Notifications
You must be signed in to change notification settings - Fork 1
Features
A detailed, educator-focused reference for every major tool in Rubric Maker.
Finding your way: each section notes where the tool lives in the app. Captured screenshots appear inline as images; any remaining 📷 marker means the screenshot still needs a manual capture (see Screenshots and Manual Capture).
When you open Rubric Maker for the first time (or in a new browser), you see the landing page, then a short onboarding wizard that asks for your role (teacher/student/other) and, for teachers, school context. Everything set there can be changed later in Settings → General.
A one-time guided tour (React Joyride) walks you through the main screens. It never returns after you skip or finish it, but most pages also have a "Tour this page" button — see Help & page tours.

The first onboarding step.
Access: Assessments → Rubrics → New rubric (or open an existing one)
A rubric consists of one or more criteria (rows) and performance levels (columns). Add as many of each as you need. Every cell can contain a description, a point value, and optional sub-items. Criteria can be dragged to reorder.

Rubric Builder with two criteria and the level columns.
| Mode | How it works |
|---|---|
| Total Points | Each criterion has a raw point value. The final score is the sum of the selected levels. |
| Weighted Score | Each criterion has a weight (percentage). The final score is a weighted average, shown as a percentage. |
| Single-Point Rubric | Each criterion has three columns: below expectations, meets expectations (the criterion descriptor itself), and exceeds expectations. The below/exceeds columns carry comments instead of separate level text. |
- Sub-items: attach a checklist to any level. Students can be scored on individual items inside the level, giving finer feedback without changing the rubric structure.
- Point ranges: instead of a fixed point value, define a minimum and maximum. The grader picks the exact score with a slider.

The expanded level options: sub-items and a point-range slider.
Link any criterion to educational standards (CCSS, NGSS, state standards, and more) via the Common Standards Project API. The picker needs an API key configured once by an admin (Admin → Integrations); saved favourites appear at the top of the picker for quick access.

The standards picker modal.
Criteria can be linked to one of three descriptor frameworks:
| Framework | Use case |
|---|---|
| CEFR (A1 → C2) | Language proficiency — dominant in European language education |
| IB Learner Profile | 10 IB attributes (inquirer, thinker, communicator, …) |
| Bloom's Taxonomy | 6 cognitive levels (remember, understand, apply, analyse, evaluate, create) |
A framework selector in the Rubric Builder chooses which descriptors are offered. CEFR badges appear in the grading interface and on exported reports.

CEFR descriptor picker linked to a criterion.
Beyond frameworks, criteria can be tagged with English grammar standards grouped by topic (e.g. Past Simple → regular/irregular verbs), each with a CEFR level (CEFR-J Grammar Profile). Linked grammar is auto-checked in scanned essays during grading — a per-criterion pass/fail breakdown that can be applied as a comment (rule/NLP-based detection, no AI).
Access: Settings → General → "Show Cambridge exam labels"
When enabled, every CEFR badge (A2 → C2) gains a second label naming the matching Cambridge English Qualification main-suite exam, e.g. a B2 badge shows "B2 · FCE".
| CEFR level | Cambridge exam |
|---|---|
| A2 | A2 Key (KET) |
| B1 | B1 Preliminary (PET) |
| B2 | B2 First (FCE) |
| C1 | C1 Advanced (CAE) |
| C2 | C2 Proficiency (CPE) |
A1 has no main-suite exam, so no label appears at A1. Labels show up wherever a CEFR badge is rendered (CEFR overview, student profiles, reports) — no other configuration needed.
Vocabulary lookups (optional): in the Rubric Builder's vocabulary panel, each word gets a "Look up" button that fetches its definition, phonetic transcription, and part of speech from the free Dictionary API (dictionaryapi.dev) — no key or account required. CEFR level comes from the bundled CEFR-J word list, not the dictionary. Lookup only fills empty fields, fails silently offline, and never overwrites teacher-entered values.
Every save snapshots the rubric automatically (capped at 20 + any manual versions). Open the version history to compare and restore any previous version. Versions are stored separately from the rubric record so they don't bloat sync traffic.
Access: Rubrics list → select a rubric → Grade (pick a student)
Pick a student from the class roster before grading. Manage students from the Students page; you can also select two or more students to grade as a group (see Group grading below).
- Click a level cell to select it as the student's score for that criterion.
- Toggle sub-item checkboxes to score checklist items within a level.
- Drag the slider (point-range levels) to set an exact score.
- Card or grid layout: toggle between the stacked criterion cards and a compact criterion × level grid (multi-level rubrics). In the grid, selecting a cell opens a per-criterion detail panel with a fine-tune points slider, sub-item chips, a manual override, and the comment composer. Single-point rubrics keep the card layout.
- Score modifiers: apply a percentage, point, or level adjustment with a reason (e.g. late penalty) — the reason is stored with the grade.

Grading with level cells, sub-item chips, and the feedback composer.

The criterion × level grid layout (multi-level rubrics).

Single-point rubric layout during grading.
| Shortcut | Action |
|---|---|
1 – 5
|
Select a performance level for the focused criterion |
A–Z then 1–5
|
Jump straight to a criterion's level (e.g. B + 2) |
Tab / Shift+Tab
|
Move focus between criteria |
Ctrl+S |
Save and advance to the next student |
? |
Open the shortcut cheat-sheet overlay |

The ? cheat-sheet overlay.
Pre-write feedback snippets and tag them by criterion, topic, or CEFR skill/level. While grading, open the bank and click a snippet to insert it into the feedback field. When a criterion has a run of low scores, the bank opens with a Suggested group of comments tagged with that criterion's CEFR skill or level. Insertions are counted, so the Comment Bank page's Sort control can surface your most-used comments first.

Comment bank open during grading.
Click the microphone button in the feedback field to dictate feedback by voice. Uses the browser's built-in Speech Recognition API (Chrome or Edge).
Attach a student's work to the graded rubric:
- Word documents (.docx) — rendered inline (Mammoth → formatted view, with a "view as sent" toggle to the original rendering)
- PDFs — rendered inline via PDF.js; text layer searchable
- Images — displayed directly; scanned images without a text layer go through Tesseract.js OCR
Select any text in the document view to leave an inline document comment (anchored note with resolve/delete), shown in a sidebar below the document. Commenting is grading-side only and never modifies the submission.
Below the rubric grid, add a general comment for the whole submission. It appears on the exported PDF report.
The grading interface is optimised for classroom tablets: enlarged tap targets, swipe-to-next-student, a floating save button pinned above the on-screen keyboard, and thumb-sized speaking-session controls. Tested at 768 px (iPad portrait) and 1024 px (iPad landscape).
Access: Rubrics list → select a rubric → pick 2+ students → grade
Saving any group member's grade fans scores and comments out to the rest of the group (each student keeps their own record). In the Rubric Builder, individual criteria can be excluded from the fan-out with a per-criterion "Group grading" toggle — so a mixed rubric (shared project score + individual participation criterion) grades correctly.

The group-grading student multi-select on the Rubrics list.
Access: Rubrics list → select a rubric → Compare
Grade two students side-by-side in a split-screen view — useful for calibrating scoring consistency. On phones/small tablets the split view reflows to a single stacked column.

Split-screen comparative grading.
Access: from a graded submission → send for second marking · Moderation queue: Assessments → Moderation
- Send a graded submission to a colleague for an independent second marking (reuses the peer-review screen and math, teacher-to-teacher).
- Disputes above a configurable point threshold surface in the Moderation queue with a per-criterion delta breakdown and a keep/accept resolution. The sidebar shows a pending-dispute count; the queue sorts oldest-first with a days-pending badge.

Moderation queue with per-criterion delta breakdown.
Access: Assessments → Tests
Rubric Maker includes a full test engine separate from rubrics and essays: multiple question types, practice vs. assessment modes, adaptive placement testing, a live proctoring monitor, and a reusable question bank.
→ Full documentation: Tests & Practice
Access: Library → Question Bank
Save any test question to a reusable bank (bookmark icon in the Test Builder), then insert it into other tests. Bank items carry a structured CEFR level and optional tags; whole reading/listening passages (content, audio, and questions) can be bundled as one reusable section item. Import a set of questions from JSON (a downloadable sample shows the shape), export the bank as JSON for backup or sharing, and bulk-manage items (delete, tag, CEFR level) from the bank page.
→ Full documentation: Tests & Practice
Access: Assessments → Flashcards
Anki-style flashcard decks scheduled with the FSRS spaced-repetition algorithm:
- Deck types: Vocabulary or Grammar. Grammar decks tag each card with a grammar item, feeding the grammar practice recommendations on learning paths.
-
Cards: front/back, optional phonetic (IPA) and part-of-speech fields; import from
.csv,.xlsx,.docx, or.txt(.xlsis not supported — save as.xlsx/CSV). - Assignment: assign a deck to a class; students study it in their portal with Again/Hard/Good/Easy ratings.
- Insights: per-student progress by learning stage, focus items ranked by lapses/difficulty.
- Students can also create their own decks (private by default, optionally shared read-only with their teacher).
→ Full documentation: Flashcards
Access: Assessments → News Flashes
Write short articles (rich-text editor) with a summary teaser, optional CEFR level, tags, and an optional link to an existing flashcard deck, test, or rubric. Flashes broadcast to every student of the creating teacher and appear as a chronological timeline in the student portal with an unread badge. The teacher-side list shows a read-receipt count per flash with an expandable list of who has read it.

News Flashes list with read-receipt counts.
Access: Assessments → Marketplace (requires cloud sync and a school)
- Marketplace: publish a rubric, test, flashcard deck, or question-bank item for colleagues at your school to browse, clone, and upvote — filterable by type.
- Department sharing: mark a rubric or comment-bank item read-only-visible to every teacher in your school with one toggle. Unlike the Marketplace, this shares the live rubric, not a cloned snapshot.
Access: Students
- Add students individually or import a class list from CSV (re-importing updates existing students by email; optional "remove students not in this file" mode keeps the roster in lockstep with an SIS export).
- Organise students into classes with a Dutch school year (groep 7/8, jaar 1–6) and VO track (VMBO-BB/KB/TL, HAVO, VWO — groep 7/8 classes have no track). A student's own track can differ from their class default by at most one adjacent level.
- Classes can carry a custom color or picture for fast visual scanning.
- View a student's full grading history on their profile page, which links to their CEFR overview, learning path, vocabulary, and flashcard data.
- Generate share codes and QR codes for student-facing features (self-assessment, essay submission, feedback, test links).

Students roster with class tabs.

Student profile: history, CEFR badges, links.
Access: Assessments → Essays
A standalone essay workspace parallel to Tests:
- Builder: prompt (rich-text), optional CEFR-linked rubric, word/time limits, assignment to a class, per-student share links, submission-code import, and a live monitor link.
- Student side: anonymous share-code submission with a distraction-free focus mode (exit control, draft-saved badge, sidebar with prompt/tips). With Supabase connected, essays hand in automatically; the code is the fallback for local mode.
- Import: paste a submission code to pull the essay from the database, or import essay text from an uploaded DOCX/PDF.
- Exports: from the Export page, export one or several essays as Markdown, DOCX, or PDF — separate files or combined — optionally with the rubric grade and grammar/vocabulary analysis attached.
-
Calendar: due dates export as
.icsso they land in a shared calendar.
When a graded submission has an essay attachment, an Analyse Document button appears in the grading interface. It runs the built-in NLP pipeline (no AI):
- Vocabulary highlighting — target vocabulary items highlighted inline
- Grammar flagging — common errors flagged with suggestions
- Comment bank insertion — detected vocabulary items added to the bank in one click
Results persist with the grade. Powered by vocabularyAnalyser.ts, grammarChecker.ts, textExtraction.ts, and cefrVocabularyProfiler.ts.
- Self-assessment: share a link/QR code with students. They score themselves against the rubric criteria (CEFR Can-Do statements); their self-scores appear alongside the teacher's.
- Peer review: students review each other's work using the rubric; peer scores are stored separately and visible to the teacher.
-
Peer review analytics: from a rubric → Compare/Peer Review → Analytics (
/peer-analytics/:rubricId) — consistency scoring (mean absolute deviation of peer scores vs. the teacher's baseline), per-reviewer leniency bias, a comment-frequency heatmap, and round-over-round trends.
Access: Assessments → Rubrics → open a rubric → Grade → Speaking (or directly from a graded submission)
Structured oral assessment with six pre-built dimensions aligned to Dutch VO CEFR targets (VMBO-BB through VWO). Audio (and, with cloud sync, video) recordings can be attached and play back from the student's portfolio. A Graded/Practice toggle lets a student record an ungraded, retakeable attempt before the graded one — kept as a separate record.
Access: Students → CEFR Overview (whole class) · a student's profile → CEFR
- CEFR overview: per-student and whole-class proficiency across Reading, Writing, Speaking, and Listening. A track/year expected-range band (per-track, per-school-year Dutch curriculum benchmarks) shows a student's level as ahead, on track, or behind for their specific class year and VO track.
- Standard mastery targets: set an expected mastery percentage for a linked standard (CCSS, NGSS, Dutch kerndoelen, or custom) per school year/VO track from Settings → Teaching; surfaces the same ahead/on-track/behind status on learning-goal views.
- Learning paths & interventions: rule-based (no AI) rubric recommendations for CEFR skills where a student trails the class average, plus flags for three or more consecutive low scores on the same criterion or skill — from each student's profile. A separate Grammar practice section suggests a matching flashcard deck and practice test after repeated low scores on grammar-linked items.
- Grammar Mastery Profile: one row per grammar item merging evidence from test accuracy, flashcard spaced-repetition progress, and rubric criteria linked to that grammar point.
- Placement testing: author a placement test (Test Builder → Mode: Placement) with multistage, staircase, or generator engines — see Tests & Practice.

Whole-class CEFR overview grid.

Per-student CEFR detail with track/year band.

Student learning path with recommendations.
Access: Students → Vocabulary
Aggregates document-analysis data across a class or student into CEFR-banded vocabulary distribution charts (A1 → C2 stacked bars), backed by the bundled CEFR-J/OpenCEFR word lists. Export the filtered word list to CSV. Definition enrichment uses the free Dictionary API (no key); CEFR levels never depend on it.
Access: Insights → Statistics
- Class average, median, highest, and lowest scores (raw points or percentage depending on the scoring mode).
- A Custom Views gallery offers curated chart combinations you can show/hide and recolour, each exportable as PNG.
| Chart | What it shows |
|---|---|
| Score histogram | Distribution of grades across the class |
| Criterion heatmap | Which criteria students perform best and worst on |
| Criterion radar | Per-criterion performance on a radar/spider chart |
| CEFR progress | How many students are at each CEFR level |
| Class trend | Average score over time across grading sessions |
| Learning goal chart | Aggregate attainment per learning goal |
| Placement progress | Estimated CEFR level across placement attempts (Elo-scaled, student view) |
All charts update in real time as grading data changes.

Statistics: class average card and charts.
The Compare view lets you select up to 4 classes on the same rubric: grouped average bars, a per-criterion gap chart, and a multi-class trend line. A collapsible Insights panel flags a struggling class (<55% avg), a weak criterion (≥15 pp below the class average), or the largest inter-class divergence (≥20 pp gap). Track (VMBO/HAVO/VWO) and school-year dropdowns filter the class selector.

Multi-class Compare view with insights panel.
Access: Insights → Activity Dashboard
A single grid tracking what's been assigned and submitted across a whole cohort:
- Rows grouped by activity type (Rubrics / Tests / Essays); columns are classes, filtered by school year and track.
- Each cell shows a
submitted/totalcount badge. - Act directly from the grid: link/unlink a rubric to a class, bulk-assign an essay to everyone not yet enrolled, assign ungraded students to a colleague, or jump into a test's builder. Rows can be drag-reordered (per teacher, persists).

Activity Dashboard grid.
Access: Students → Messages (inbox) · Topbar bell → Notifications
- Messages: portal-authenticated students can ask a question about a rubric grade, test, essay, or anything else; teachers reply from the Messages inbox or start threads themselves. Requires Supabase.
-
Notification Center: the bell shows overdue grading, unread messages, and pending moderation reviews;
/notificationshas the full, filterable history. Dismissing an overdue-grading or moderation item snoozes it and syncs across devices; unread messages can only be cleared by reading them. - Email digests: each of the three categories has its own opt-in nightly digest (Settings → Administration → Email Digest, self-hosted deployments only — needs the server-side digest job and SMTP).

Messages inbox with a student thread.

Notification Center with the three categories.
Access: Insights → Export (or from within a graded rubric)
| Format | Content |
|---|---|
| Formatted student report with rubric grid, scores, and feedback — one student or the whole class | |
| Word (.docx) | Raw rubric data; or upload a custom .docx template with mail-merge fields for a branded report |
| CSV | Flat table of scores per student per criterion, for Excel or a gradebook |
| Markdown | Essay content export (separate or combined files) |
| JSON backup | Full export of all app data (rubrics, students, grades, comments, settings) |
| Gradebook presets | Magister / SOMtoday column formats |
| Calendar | Essay and test due dates as .ics
|
Word mail-merge templates: upload a .docx with placeholders like {{studentName}}, {{totalScore}}, {{criterion_1}}; the engine fills them per student. A sample template is at public/sample-template.docx. Style templates can also set heading/body fonts and colours for essay and period-report exports.
Printing directly: Print Rubric triggers window.print() — a @media print stylesheet hides chrome, enforces page-break rules, and applies portrait/landscape from the rubric's format setting.

The Export page with format selection.
Access: Settings → Administration → Database → Connect & Sync
An optional backend that mirrors your data to Supabase (PostgreSQL + Storage + Auth). Enables:
- Syncing rubrics, students, and grades across devices
- Sharing rubrics/classes with colleagues (viewer or editor) plus the Marketplace and department sharing
- The student portal (self-assessment, essays, tests, flashcards, messaging)
- Storing attachments and templates in Supabase Storage, removing the localStorage size limit for files
The app continues to work offline (with reduced capabilities) when Supabase is configured. See Supabase Sync for full setup.
Access: Sidebar → Privacy (shield icon) or /privacy
An in-app GDPR/AVG page covering all data categories and where they're stored, the legal basis for processing student data, and rights (erasure, portability), plus contact info for the Dutch supervisory authority (Autoriteit Persoonsgegevens).

The in-app /privacy page.
Access: Settings → General (export backup, all users) · Settings → Administration (full backup/restore, admin)
-
Export backup: downloads
rubric-maker-backup.jsoncontaining all rubrics, students, grades, comment bank, question bank, and settings. - Import backup: upload a previously exported JSON file to restore (this overwrites existing data — export first; a preview modal shows a summary of the file before applying).
Access: Settings → General
One-click bundles that set accent color, UI font, and export styling together (single atomic update; overriding the accent afterwards clears the bundle):
| Bundle | Accent | UI font | Export style |
|---|---|---|---|
| Academy | Blue | Inter | Calibri, blue headers |
| Nature | Green | Nunito | Calibri, green headers |
| Midnight | Indigo | Source Sans 3 | Calibri |
| Warm | Orange/amber tones | — | — |
| Slate | Cool grey tones | — | — |

Theme bundle picker.
The active accent generates a full tonal scale (--accent-50 … --accent-900) via CSS color-mix(), driving hovers, badges, charts, and borders consistently in light and dark mode.
Five decorative Google Fonts (Playfair Display, Oswald, Bebas Neue, Special Elite, Courier Prime) are available for PDF/DOCX exports via the rubric's Format tab, with a live preview. A dyslexia-friendly reading mode and light/dark themes round out the appearance options.

Settings → General (language, theme, Cambridge labels).
Rubric Maker is an installable PWA: open it in a browser, choose "Install app", and it runs like a desktop app with an offline-capable service worker. Without Supabase, everything still works from localStorage (single device); with Supabase, the service worker never caches API requests so a cached response can't mask a failed sync.
Access: Main menu → Admin (admin role required; Settings → Administration for admins too)
| Tab | What it does |
|---|---|
| Users | Manage user accounts and roles |
| Schools | School records used by the marketplace and department sharing |
| Database | Supabase connection, Push local → database, Pull database → local, sharing management |
| Integrations | Standards API key (Common Standards Project) with CORS setup instructions |
| Data | Search students and permanently delete or anonymize (scrub PII from) individual records |
| Retention | Data-retention configuration (see below) |
| Audit | Searchable, category-filterable log of role changes, deletions, grade saves, rubric edits, exports, and auth events, with CSV export (backed by the audit_logs table + pg_cron retention job) |
| Archive | Soft-delete a student, then Restore or Anonymize them later (anonymizing scrubs PII while keeping aggregate grade history) |
Roles: teacher (renamed from user), admin, observer, and student, enforced via Supabase RLS.
Roster sync: CSV upsert updates existing students by email on re-import; an optional "remove students not in this file" mode keeps a class roster in lockstep with a school's SIS export.
Rubric Maker targets WCAG 2.1 AAA where physically possible (button/large-text contrast uses the 4.5:1 bar; link/body text targets 7:1). src/utils/contrastCheck.ts audits every theme bundle, accent preset, and CEFR badge color in CI.
-
Keyboard: full keyboard dragging in the Rubric Builder, a global
:focus-visibleoutline, and a translated skip-to-content link. - Focus management: modals trap focus and restore it to the triggering element on close.
-
Screen readers: drag handles and proctoring flags carry translatable
aria-labels; every page is covered by an axe-core page suite in CI (all 39 previously-uncovered pages added in Phase 31).
- "Tour this page" — an interactive Joyride walkthrough is available on most major pages (Rubric Builder, Export, Statistics, Grading, Comparative Grading, Essays, Tests, Activity Dashboard, CEFR Overview, Speaking, Student Profile, Students, and more).
-
Contextual tooltips — a hover/click help icon (
HelpPopover) next to less-obvious controls, including the score modifier, the LWW sync indicator (Admin → Database), and proctoring flags on Test Results / Live Monitor. - In-app Docs page — the sidebar question-mark icon opens the Docs page with a route map, glossary, and keyboard-shortcut reference.
- All tour and tooltip text is translated across all 5 locales.
Something missing or out of date? This wiki is verified against the main branch of the repository — check the Contributing page for how to report issues.