Assignments
Assign online and offline exams to individual students, sections, or entire classes, and track completion in real time.
Overview
The Assignments system in Testify lets you distribute exams to your students with optional due dates. You can assign to individual students, entire sections, or full classes -- the system automatically expands group assignments to individual student records. Students receive push notifications and in-app alerts when a new exam is assigned. You can track who has started, completed, or missed their assignments from a single dashboard.
Assigning an Online Exam
Step-by-Step
-
Open the Exam
- Navigate to "Exams" in the sidebar
- Click on the exam you want to assign
-
Click "Assign"
- Click the "Assign Exam" button in the exam toolbar
-
Select Assignment Scope
Choose one or more of the following:
Individual Students:
- Search for students by name or email
- Click to add each student to the assignment list
- Useful for remedial or supplementary assignments
By Section:
- Select one or more sections from the dropdown
- All students in those sections are automatically included
- The system looks up students via the class_members table with role = 'student'
By Class:
- Select one or more classes from the dropdown
- All students in those classes (across all sections) are included
- Best for class-wide exams
-
Set Due Date (optional)
- Pick a date and time by which students should complete the exam
- If not set, the assignment has no deadline
-
Confirm Assignment
- Click "Assign"
- The system creates individual assignment records for each student
- Each assignment record includes:
status: "assigned"assignment_type: "individual", "section", or "class"assigned_at: Current timestamp
- If a student is already assigned (e.g., via both section and class), the existing record is updated rather than duplicated
-
Student Notifications
- Assigned students automatically receive:
- In-app notification: "New Exam Assigned" with exam title, duration, and start time
- Push notification: Sent to mobile and web devices
- Notifications are sent in the background and do not block the assignment process
- Assigned students automatically receive:
Tip: Assigning by section or class is much faster than adding students individually. Set up your classes and sections first in Classroom Management.
Assigning an Offline Exam
The process is identical to online exam assignments.
- Navigate to "Offline Exams"
- Open the offline exam
- Click "Assign Exam"
- Select students, sections, or classes
- Set a due date (optional)
- Click "Assign"
The offline exam assignment tracks:
- Assignment status (assigned, in_progress, completed, overdue)
- Submission count (number of OMR sheets scanned for this student)
- Completion timestamp (when status changes to "completed")
Viewing Assignment Status
For a Specific Exam
-
Open the Exam
- Navigate to the exam (online or offline)
-
Click "Assignments" Tab
- The assignments list shows all students assigned to this exam
-
Assignment Details
- Each row displays:
- Student Name (first name + last name)
- Class and Section (if assigned via group)
- Assigned Date
- Due Date (if set)
- Status: assigned, in_progress, completed, or overdue
- Attempt Count: Number of times the student has attempted the exam
- Best Score (for online exams): Highest score across all attempts
- Each row displays:
-
Sort and Filter
- Sort by name, date, or status
- Filter by class or section to focus on specific groups
For a Student (Student View)
Students see their assigned exams on their dashboard:
- My Assignments
- Lists all exams assigned to the student
- Each entry shows:
- Exam title and description
- Duration and total marks
- Start time and end time (for scheduled exams)
- Exam status (draft, published, active, ended)
- Number of attempts made
- Best score achieved
Tracking Completion
Online Exam Completion
- When a student submits an exam attempt, the system records it
- The
attempt_counton the assignment updates automatically - The
best_scoreshows the highest marks obtained across all submitted attempts - Status does not automatically change -- teachers can monitor via attempt count
Offline Exam Completion
- When an OMR sheet is scanned and verified for a student, the
submission_countupdates - Teachers can manually update assignment status:
- assigned -- Initial state
- in_progress -- Student has started but not completed
- completed -- Student has submitted (manually set or auto-set)
- overdue -- Past due date without completion
To update status:
- Open the offline exam assignments
- Find the student
- Click "Update Status"
- Select the new status
- If set to "completed", the
completed_attimestamp is recorded automatically
Removing an Assignment
- Open the exam's assignment list
- Find the student assignment to remove
- Click the "Delete" button (trash icon) next to the assignment
- Confirm removal
- The student will no longer see this exam in their assignments
Tip: Removing an assignment does not delete any exam attempts the student has already made. Their scores and data remain intact.
Bulk Assignment Workflow
For large-scale assignment scenarios:
-
Set Up Classes First
- Ensure all students are added to their correct classes and sections
- See Classroom Management
-
Create the Exam
- Build and publish the exam
- See Building Exams
-
Assign by Class
- Select the class(es) to assign to
- All students in those classes receive the assignment instantly
-
Monitor Progress
- Check the assignments tab periodically
- Follow up with students who have 0 attempts as the due date approaches
Assignment Types Explained
| Type | Description | When to Use |
|---|---|---|
individual | Assigned directly to specific students | Remedial work, makeup exams |
section | Expanded from section membership | Section-specific tests |
class | Expanded from class membership | Class-wide exams, finals |
When a student belongs to multiple groups (e.g., assigned via both section and class), only one assignment record is created. The latest assignment scope takes precedence via upsert.
Best Practices
Setting Due Dates
- Always set due dates for homework and practice exams
- Leave due dates open for diagnostic or self-paced assessments
- Set due dates at least 2-3 days out to give students adequate time
Monitoring Completion
- Check assignment status at least once before the due date
- Send reminders to students with 0 attempts via class announcements
- Use the student's attempt count and best score to identify who needs help
Organizing Assignments
- Use consistent exam naming to help students identify assignments
- Assign exams in chronological order to avoid confusion
- Remove outdated assignments to keep student dashboards clean
Common Issues
Students Not Receiving Notifications
- Ensure students have notification permissions enabled in their browser/device
- Check that push notification service is configured on the backend
- In-app notifications are always created regardless of push status
"Exam not found" When Assigning
- The exam must be saved and have a valid ID
- Draft exams can be assigned but students cannot start them until published
Duplicate Assignment Error
- The system uses upsert logic, so assigning the same student twice simply updates the existing record
- This is expected behavior, not an error
Cannot Delete Assignment
- Only users with Teacher, Manager, Admin, or Super Admin roles can delete assignments
Notification Details
When you assign an exam, the notification system works as follows:
In-App Notifications
- A notification record is created in the
exam_notificationstable for each assigned student - Notification type:
EXAM_ASSIGNED - Title: "New Exam Assigned"
- Message includes:
- Exam title (e.g., "You have been assigned 'Physics Mid-Term 2026'")
- Duration in minutes (if set)
- Start time (if scheduled)
- Students see these in their notification bell icon
Push Notifications
- Sent to all assigned students who have push notifications enabled
- Works on both mobile devices and web browsers
- Contains the same title and message as the in-app notification
- Includes metadata:
examIdandtype: 'exam_assigned'
Notification Timing
- Notifications are sent asynchronously (fire-and-forget) immediately after the assignment is created
- If the notification service encounters an error, the assignment still succeeds -- notification failures are non-fatal
- Students who are offline will see the in-app notification when they next log in
Assignment Lifecycle
Understanding the full lifecycle of an assignment:
- Created -- Teacher assigns the exam; status is
assigned - Notified -- Students receive push and in-app notifications
- Started -- Student opens and begins the exam; status can be updated to
in_progress(offline exams) - Submitted -- Student completes the exam; attempt is recorded
- Graded -- Teacher grades subjective questions (if any)
- Completed -- All work is done; status is
completed - Overdue -- Due date has passed without completion; status is
overdue
For online exams, steps 3-4 happen automatically within the exam player. For offline exams, the teacher updates status manually based on OMR scan results.
Next Steps
- Classroom Management - Set up classes before assigning
- Grading - Grade submitted attempts
- Analytics - Analyze assignment results
- Certificates - Generate certificates after exam completion
Need Help?
Contact support at support@edukali.ai