-
Notifications
You must be signed in to change notification settings - Fork 1
Features
A detailed reference of every major feature in Rubric Maker, written for educators.
Access: Main menu → 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.
| Mode | How it works |
|---|---|
| Total Points | Each criterion has a raw point value. The final score is the sum of all selected levels. |
| Weighted Score | Each criterion has a weight (percentage). The final score is a weighted average, expressed as a percentage. |
| Single-Point Rubric | Each criterion has three columns, one being below expectations, meets expectations (includes the criterion descriptor), and exceeding expectations. For the below and exceeding expectations columns, comments will be filled in here |
- Sub-items: Attach a checklist to any level. Students can be scored on individual items within the level, giving more granular feedback without changing the overall rubric structure.
- Point ranges: Instead of a fixed point value, define a minimum and maximum. The grader uses a slider to pick the exact score within that range.
Link any criterion to educational standards (CCSS, NGSS, state standards, and more) via the Common Standards Project API. Saved favourites appear at the top of the picker for quick access.
Rubric 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, etc.) |
| Bloom's Taxonomy | 6 cognitive levels (remember, understand, apply, analyse, evaluate, create) |
A framework selector in the RubricBuilder lets you choose which framework to use when linking descriptors to criteria. CEFR badges appear in the grading interface and on exported reports.
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 (Cambridge only offers Pre A1 Starters for Young Learners), so no label appears at A1.
These labels show up on the CEFR overview page and on student profile pages anywhere a CEFR badge is rendered — no other configuration is required.
Vocabulary lookups (optional): If an admin has configured a Cambridge Dictionary API key (Admin Dashboard → Integrations), the Vocabulary List editor can look up a word and auto-fill its CEFR level and definition for empty fields. Without a key, vocabulary entries work exactly as before — this is purely additive and fully optional.
Access: Rubrics list → select a rubric → Grade
Pick a student from the class roster before grading. Create and manage students from the Students page.
- Click a level cell to select it as the student's score for that criterion.
- Toggle sub-item checkboxes to score individual checklist items within a level.
- Drag the slider (point-range levels) to set the exact score.
Pre-write feedback snippets and tag them by criterion or topic. While grading, open the comment bank and click a snippet to insert it into the feedback field. Edit and reuse snippets across multiple students.
Attach a student's work directly to the graded rubric. Supported formats:
- Word documents (
.docx) — rendered inline via Mammoth - PDFs — rendered inline via PDF.js
- Images (
.png,.jpg,.gif, etc.)
Documents with embedded text are searchable. Scanned images without a text layer are passed through Tesseract.js OCR to extract readable text.
Click the microphone button in the feedback field to dictate feedback by voice. Uses the browser's built-in Speech Recognition API (requires Chrome or Edge).
Below the rubric grid, add a general comment that applies to the whole submission. This appears on the exported PDF report.
For grading large classes without leaving the keyboard:
| Shortcut | Action |
|---|---|
1 – 5
|
Select performance level for the focused criterion |
Tab / Shift+Tab
|
Move focus between criteria |
Ctrl+S |
Save and advance to the next student |
? |
Open the shortcut cheat-sheet overlay |
Level buttons show a subtle shortcut hint on hover.
The grading interface is optimised for classroom tablet use:
- Enlarged tap targets on level selector buttons.
- Swipe-to-next-student gesture.
- Floating save button pinned above the on-screen keyboard.
- Speaking session timer and pronunciation error buttons sized for thumb use.
- Tested at 768 px (iPad portrait) and 1024 px (iPad landscape).
Access: Rubrics list → select a rubric → Compare
Grade two students side-by-side in a split-screen view. Useful for calibrating scoring consistency — you can see both responses and scores simultaneously and adjust one without losing sight of the other. On phones/small tablets, the split view reflows to a single stacked column.
Access: Main menu → Tests
Build no-auth, share-link-based tests, separate from the rubric/essay flow.
-
Question types: multiple-choice, short-answer, open-ended, cloze (
{{gap}}) and hot-text ([[clickable fragment]]) passages, plus drag-and-drop ordering questions with optional images/hints. - CEFR / Standards linking: link any question to a CEFR level or an external standard, same picker used in the Rubric Builder.
-
Student side (
/test/:code): no account needed, draft autosave, optional timer, and an advisory Safe Exam Browser gate (requireSEB) — this is a UA-based deterrent, not enforced lockdown. -
Results (
/tests/:testId/results/:studentTestId): MC/short-answer auto-scored, open questions graded manually, per-standard/CEFR rollups, mapped onto a grade scale. - Class-average adjustment: a reversible, audited curve (raw scores are always preserved alongside the adjustment).
-
Live monitor (
/tests/:testId/monitor, and the equivalent for essays at/essays/:assignmentId/monitor): presence, a live response grid, and proctoring telemetry (tab-switch, copy/paste, battery, heartbeat). Offline mode falls back to a post-hoc event-log review instead of live updates.
Access: Main menu → Vocabulary
Aggregates DocumentAnalysisResult data across a class or student into CEFR-banded vocabulary distribution charts (A1 → C2 stacked bars). Backed by an open CEFR word list, with the optional Cambridge Dictionary API used only for definition enrichment. Export the filtered word list to CSV.
Access: From a rubric → Compare/Peer Review → Analytics, or /peer-analytics/:rubricId
Once peer reviews are traceable (each one records gradedBy), this page surfaces:
- Consistency scoring — mean absolute deviation of peer scores vs. the teacher's baseline grade.
- Per-reviewer leniency bias and inter-rater spread.
- A comment-frequency heatmap reusing the same criterion heatmap component as Statistics.
- Round-over-round trends, if a rubric is peer-reviewed more than once.
Access: Main menu → Activity Dashboard
A single grid for tracking what's been assigned and submitted across a whole cohort:
- Rows are grouped by activity type (Rubrics / Tests / Essays); columns are classes, filtered by school year and track.
- Each cell shows a
submitted/totalcount badge. - Assign directly from the grid — link/unlink a rubric to a class, bulk-assign an essay to everyone not yet enrolled, or jump straight into a test's builder.
Access: Main menu → Statistics
- Class average, median, highest, and lowest scores.
- Score displayed as raw points or percentage depending on scoring mode.
| 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 multiple grading sessions) |
| Learning goal chart | Aggregate attainment per learning goal |
All charts update in real time as grading data changes.
A Compare view mode (alongside the per-rubric view) lets you select up to 4 classes on the same rubric for a grouped average bar chart, a per-criterion gap chart, and a multi-class trend line over time. A collapsible "Insights" panel surfaces rule-based 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 in both modes.
Access: Main menu → Students
- Add students individually or import a class list from CSV.
- Organise students into classes.
- View a student's full grading history on their profile page.
- Generate share codes and QR codes for student-facing features (self-assessment, essay submission).
Students can submit essays via a share code. The essay is stored locally (no server involved). The grader can:
- View the submitted essay inline with the rubric.
- Export a slip sheet with the essay metadata.
When the application is connected to a supabase database, the essay will be handed in automatically, with the code being a fallback method. The teacher is then able to import the essay in the grading view.
When a graded submission has an essay attachment, an Analyse Document button appears in the grading interface. It runs the document through the built-in NLP pipeline:
- Vocabulary highlighting — target vocabulary items are highlighted inline.
- Grammar flagging — common errors are flagged with suggestions.
- Comment bank insertion — detected vocabulary items can be added to the comment bank in one click.
Results are persisted with the grade so they are available on reopening. Powered by vocabularyAnalyser.ts, grammarChecker.ts, and textExtraction.ts.
- Self-assessment: Share a link/QR code with students. They score themselves against the rubric criteria. Their self-scores appear alongside the teacher's scores.
- Peer review: Students review each other's work using the rubric. Peer scores are stored separately and visible to the teacher.
Access: Main menu → Speaking
Record and manage oral assessment sessions. The speaking assessment uses separate scoring dimensions suited to spoken language (fluency, pronunciation, interaction, etc.).
Access: Main menu → Export (or from within a graded rubric)
| Format | Content |
|---|---|
| Formatted student report with rubric grid, scores, and feedback. Export 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, suitable for Excel or a gradebook. |
| JSON backup | Full export of all app data (rubrics, students, grades, comments). Use for backup or device transfer. |
Upload a .docx file with placeholder fields such as {{studentName}}, {{totalScore}}, {{criterion_1}}. The export engine fills these in for each student and produces individual Word documents. A sample template is available at public/sample-template.docx.
Use Print Rubric (triggers window.print()) to print without generating a PDF first. A @media print stylesheet hides the sidebar, topbar, and action buttons, enforces page-break rules between criteria sections, and applies portrait or landscape orientation based on the rubric's format setting.
Access: Settings → Microsoft 365
Connect with an Azure AD account via MSAL to access OneDrive files. Once connected, you can open student documents directly from OneDrive inside the attachment viewer without downloading them first.
Access: Settings → Database → Connect & Sync
An optional sync layer that mirrors your data to a Supabase (PostgreSQL) instance. Enables:
- Syncing rubrics, students, and grades across multiple devices.
- Sharing rubrics or classes with colleague accounts (viewer or editor access).
- Storing attachments and export templates in Supabase Storage, removing the localStorage size limit for files.
The app continues to work offline via localStorage even when Supabase is configured. See the Supabase Sync page for full setup instructions.
Access: Sidebar → Privacy (shield icon) or navigate to /privacy
An in-app GDPR/AVG documentation page covering:
- All data categories and what is stored where (localStorage vs Supabase).
- Legal basis for processing student data.
- Right to erasure and data portability instructions.
- Contact information for the Dutch supervisory authority (Autoriteit Persoonsgegevens).
Access: Settings → Data Management
-
Export backup: Downloads a
rubricmaker-backup-<date>.jsonfile containing all rubrics, students, grades, comment bank entries, and settings. - Import backup: Upload a previously exported JSON file to restore all data. This overwrites existing data, so export a backup first.
- Use backups to transfer data between devices or browsers.
Access: Settings → General
Pick a one-click theme bundle to set the accent color, UI font, and export styling together:
| 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 | — | — |
Selecting a bundle is a single atomic update — accent color, font, and export defaults all change together. You can still override the accent color afterwards with a custom color picker; doing so clears the active bundle.
Whatever accent color is active (bundle or custom), the app generates a full tonal scale (--accent-50 through --accent-900) using CSS color-mix(). This scale drives hover states, badges, charts, and borders throughout the UI, so a single color choice stays consistent everywhere — including in both light and dark mode.
Five decorative Google Fonts (Playfair Display, Oswald, Bebas Neue, Special Elite, Courier Prime) are available as heading/body fonts for PDF and DOCX exports, in addition to the standard system fonts. Pick one in the rubric's Format tab — a live preview shows how headings and body text will look before you export.
Access: Main menu → Admin (admin role required)
-
Roles:
teacher(renamed fromuser),admin, andobserver, enforced via Supabase RLS. - Integrations tab: Standards API and Cambridge Dictionary API keys.
- Database tab: Supabase connection management (same as Settings → Database).
- Archive tab: soft-delete a student, then Restore or Anonymize them later. Anonymizing scrubs PII from the record while keeping aggregate grade history intact.
-
Audit tab: a searchable, category-filterable log of role changes, deletions, grade saves, rubric edits, exports, and auth events, with CSV export. Backed by Supabase
audit_logsplus apg_cronretention job (admin logs 3yr / grade data 1yr / export+auth logs 1mo). - 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.
RubricMaker 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 (
@hello-pangea/dnd), a global:focus-visibleoutline, and a translated skip-to-content link. - Focus management: modals (GradeStudent, RubricBuilder) trap focus and restore it to the triggering element on close.
-
Screen readers: drag handles and proctoring flags carry translatable
aria-labels; RubricBuilder, GradeStudent, and ComparativeGrading are covered by the jest-axe page suite in CI.
- "Tour this page" — an interactive walkthrough (Joyride-based, no video) is available on most major pages: Rubric Builder, Export, Statistics, Grading, Comparative Grading, Essays, Tests, Activity Dashboard, CEFR Overview, Speaking Session, Student Profile, and Students.
-
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. - All tour and tooltip text is translated across all 5 locales.
Access: Topbar → bell icon | Settings → Notifications
A notification bell in the topbar shows a badge count of classes with overdue grading. Clicking it lists which classes haven't been graded recently.
- Browser notifications: Opt in via the browser's Notification API to receive reminders even when the tab is in the background.
- Configurable threshold: Set the number of days without grading before a class is flagged as overdue (default: 7 days). Adjust in Settings → Notifications.
The reminder logic reuses the at-risk detection already present on the Dashboard.