Assignment Curation
Welcome to the Assignment Curation Guide for Business Users at DojoCode. Assignments are the core teaching primitive on the platform: they let you hand out a learning path or a single challenge to one student, a whole group, or any combination, then watch real-time progress as your class moves through the material.
This guide walks you through the full lifecycle — creating a draft, picking recipients, publishing, monitoring, extending deadlines, archiving, and reviewing analytics.
Getting started
INFO
Creating assignments is included in every business plan. There are no level / point requirements — once you've subscribed and verified your email, you can roll out work immediately.
Head to the Assignments page in the business dashboard sidebar. You'll see a list of your existing assignments (drafts, published, and archived together) plus a NEW DRAFT button to start a fresh one.
Creating an assignment
Click NEW DRAFT to open the four-step wizard.
Step 1 — Details
Provide the title and optional instructions for the assignment. Instructions render as markdown for your students, so use headings, lists, and code blocks freely. Keep the title short (3–120 characters) and descriptive — students see it everywhere.
Step 2 — Source
Choose what you're assigning:
- Learning path — a multi-lesson track. Students complete lessons + their required challenges in order. Best for structured curricula or week-long modules.
- Challenge — a single coding exercise. Best for quick check-ins, warm-ups, or standalone practice.
Use the search + filter accordion to narrow the picker by template, language, difficulty, or your own tags.
WARNING
Source can't be changed after creation. If you pick the wrong source, you'll need to delete the draft and start over.
Step 3 — Recipients
Pick groups, individual students, or both. The wizard shows a live unique-recipient count so you can see exactly how many students will receive the assignment after de-duplication.
TIP
Mixing groups and individuals is fully supported — a student in a targeted group AND in the individuals list still only gets one assignment row.
Step 4 — Schedule and grading
- Due date (required) — when the assignment is expected to be done. After this date the row automatically flips to Overdue and the student is locked out (until you grant an extension).
- Cutoff date (optional) — a hard final lock. Submissions after the cutoff don't credit the assignment, even if the student's row hasn't been crontab-flipped to overdue yet. Useful when you want a soft warning (Due) followed by a hard wall (Cutoff).
- Autograding threshold (optional) — when enabled, only submissions scoring at or above the threshold count as Passed. When disabled, every completion counts as passed.
Hit Create assignment to save the draft. New assignments always save as drafts — they're invisible to students until you publish them.
The Students tab on a draft
Open a draft you just created and click the Students tab. You'll see a preview of every recipient resolved from your group + individual selections, each with a Pending publish pill. The metric columns (status, progress, score, time) stay empty until publish — the table is showing you who will receive the work.
Use this to sanity-check your audience before fanning out.
Publishing
When the draft looks right, hit Publish from either:
- The view page action toolbar.
- The list-item context menu on
/business/assignments.
Publishing:
- Resolves the recipient set (groups → students + individual students, deduped, instructor removed).
- Creates an
AssignmentProgressrow for every recipient. - Sends a notification + email to every student announcing the new assignment.
- Emits a real-time socket event so anyone with an open browser tab sees the assignment appear immediately.
WARNING
Publishing is a one-way commitment. Once published, you can't change the source, title or instructions anymore — those edits are draft-only. Use Extend deadline for date changes, Archive to remove from student lists, or Delete to nuke entirely.
If your draft has zero resolvable recipients (empty groups + no individuals), publishing is rejected with a clear error.
Monitoring progress
The published assignment's view page surfaces:
- Stat tiles — Recipients, Completion %, Avg score, Avg time.
- Status distribution — a stacked bar showing the share of students in each status (Completed / In progress / Not started / Overdue) with a legend tile per status.
- Overview tab — instructions, recipients (group names + individual usernames as chips), source link, schedule timeline, grading config.
- Students tab — the per-student progress table. Filter by status, paginate, and grant extensions inline.
- Analytics tab — d3 charts: outcomes donut, per-lesson pass rate (LP-type only), score distribution histogram, cumulative completion timeline.
The Students table updates in real time as your class works — no refresh needed for socket-driven events, and a manual Refresh button is right above the table.
Granting extensions
Click Extend deadline in the action toolbar to open the extension modal. You can:
- Extend globally — push the due date forward for every recipient. Students whose row was overdue are unlocked back to In progress automatically.
- Extend for specific students — pick from the live student list and assign each a new deadline + optional reason ("medical leave", "ran into a blocker"). Per-student overrides take precedence over the global due date.
TIP
The cutoff date is auto-bumped if the new deadline lands past it, so the extension actually buys the student working time. You don't need to remember to update the cutoff manually.
Per-student extensions also fire a notification + email to the affected student with the new deadline and your reason.
You can grant the same extension multiple times — there's no limit. Re-extending just creates a new entry that overrides the previous one.
Archiving
When a unit is over, hit Archive from the action toolbar (visible on published assignments only). Archived assignments:
- Disappear from student lists immediately.
- Stop crediting new submissions toward the assignment.
- Still count in your analytics with the
includeOrphanedflag if you ever need to audit them.
A confirmation modal protects you from accidental clicks. Archive is reversible only via delete + recreate — there's no Restore action.
Deleting
The Delete action is available in every state and cascade-deletes:
- The assignment document itself.
- Every
AssignmentProgressrow pointing at it. - Every related notification (the bell entries on every recipient).
Use it freely on drafts. On a published assignment with active progress, the confirmation modal warns you about the cascade ("All N student progress rows … will also be deleted") before you commit.
WARNING
Deletion is permanent. Once you confirm, there's no undo — you'd need to recreate the assignment from scratch and republish.
Editing a draft
You can edit a draft assignment from either the list-item context menu or the Edit button on the view page. The wizard reloads with the existing values and lets you tweak anything — title, instructions, source, recipients, schedule, grading.
WARNING
Edit is draft-only. Once published, the Edit button disappears from the view page and the list-item context menu. To change a published assignment's structure, delete it and recreate.
Lifecycle reference
Quick state machine recap:
| From | Action | To |
|---|---|---|
| (none) | Create wizard | Draft |
| Draft | Edit wizard | Draft |
| Draft | Publish | Published (fan-out fires) |
| Published | Extend deadline | Published (overdue rows unlock) |
| Published | Archive | Archived |
| any | Delete | (gone, cascade-deleted) |
Crons running in the background:
- Hourly overdue sweep flips eligible
not_started/in_progressrows tooverdueonce their effective due date passes (per-student extensions honored). Overdue students get a notification + email so they know to ask for an extension. - Daily due-soon reminder at 08:00 server time pings every open student whose effective due date lands within 24 hours.
What students see
For full visibility into the student-side experience — how the assignment shows up on their My Assignments page, what the assignment view looks like, and how completion is celebrated — see the Assignment concept page.