Courses and assignments
Courses in Institflow are built around your teachers' own words for how they teach — in-person, hybrid or online — and give teachers a real curriculum editor and an assignment workflow, not just a class roster. Courses live behind a feature flag the vendor turns on for your install; if you don't see Courses in your navigation at all, that is why.
The three course types
Every course is one of:
- In-person — a group course (fixed sessions, a teacher, a room) with no curriculum. This is the default for a brand-new course.
- Hybrid — the exact same group course, once it has at least one curriculum section. Nothing else changes: the sessions, attendance and gradebook you already know keep working; the curriculum sits alongside them.
- Online — a self-paced course: curriculum and enrolment, no sessions, no attendance.
"Hybrid" is a live fact, not a choice you save
There is no separate "is this course hybrid?" setting. The word you see is worked out every time from what the course actually has: a group course with at least one curriculum section reads as Hybrid; the same course with no sections yet reads as In-person. If you pick "Hybrid" while creating a brand-new course, it will read back as "In-person" until you add a section in the curriculum editor — the create/edit form tells you this next to the choice. There is nothing broken here; the word always describes the course as it stands today.
Building the curriculum
A course's curriculum is sections, each holding units in order. Three unit kinds exist today:
- Lesson — text, an optional video and attachments. A lesson with no video and no text (attachments only) reads to students as a document.
- Assignment — instructions, a due date, and a place for students to submit work. See Assignments below.
- Quiz — timed or untimed questions, most of them graded automatically. See Quizzes below.
Writing lesson content
Lesson text is written with a light, Word-like editor: bold, italic, inline code, two heading sizes, bullet and numbered lists, block quotes, links, images and tables — add/remove rows and columns from the toolbar once you're inside one. Images are added by pasting a URL (with an optional alt text), never uploaded directly. A Markdown tab next to the editor shows and lets you hand-edit the exact same content as plain text — useful for a quick fix or for pasting content you already have; switching back to the editor re-renders whatever you typed there.
Everything you write is stored as plain Markdown, never as HTML: the learner page renders it back with tables and images, and never runs anything you paste as script or style.
Video
A lesson's video is a YouTube link — nothing else. Paste a normal watch link, a youtu.be link or an embed link and Institflow resolves it to a YouTube video automatically, with its title looked up for you. Uploading a video file, or linking to Vimeo, TeraBox or any other host, is not supported and is refused with a clear error rather than silently failing. Set the video's YouTube privacy to unlisted or public — a private video cannot be embedded, since Institflow never signs in to YouTube on your behalf.
Drip and publishing
Each unit can carry a drip gate that hides it from students until it opens: an absolute date, a number of days after the student's own enrolment date, or both together (the later of the two wins). A unit with neither gate set has always been available since publishing.
Publishing is separate from drip: a unit is either a draft (visible only to whoever is authoring it) or published (visible to enrolled students, subject to its own drip gate). Unpublishing pulls a unit back out of students' view without deleting it.
Assignments
Creating an assignment sets:
- Instructions — written with the same rich-text editor as a lesson.
- Due date (optional) — a date and time; leaving the time blank defaults to end of day.
- Max score — required, greater than zero.
- Allow late submissions — a plain on/off switch.
- Submission kinds — any combination of text, file and link; a student can only use the kinds you turned on.
What a student sees and can do. The unit page shows the instructions, a live due-date countdown, and a form for whichever submission kinds you allowed. A student can resubmit as many times as they like — replacing their previous text, link and files — right up until the assignment is graded; a graded submission can only change again if you return it for revision (below). Guardians viewing a linked child's page see the same unit read-only: instructions, status and score, but never a submission form — a guardian can never submit on a child's behalf.
Late and closed. Before the due date (or with no due date at all), the form is simply open. After the due date: if you allowed late submissions, the student can still submit and it is recorded as late; if you did not, the page shows the assignment as closed and the form disappears — the API refuses the write outright, so nothing you see on screen can promise a submission the server would then reject.
Grading, feedback and return for revision. The submissions table lists every student's status (submitted / late / returned / graded), filterable by status, with a grade drawer per row: enter a score (capped at the assignment's max score), optional feedback, and save. Instead of grading, you can return a submission for revision with feedback — this reopens it for the student to resubmit, without touching due-date rules.
Publishing to the gradebook. One button publishes every currently-graded submission on this assignment into the gradebook, as one exam of kind Homework per group — the exact same gradebook your groups already use, never a second one. Running it again after grading more submissions updates the same gradebook entries rather than creating duplicates. A student who is graded on an assignment but holds no group enrolment at all — every student of a pure online course, by definition — cannot be published into a group-scoped gradebook entry; the result tells you exactly who was skipped, and why, rather than silently dropping them.
Notifications. Publishing an assignment (making the unit visible) notifies every student with access to the course; a submission notifies the course's own teacher(s) — a pure online course has no teacher in this schema, so nothing is sent there; a grade notifies the student and their guardians immediately. Each of these is a paid email notification through the messaging relay, and the institute can turn any of them off.
Quizzes
Who can author. Adding a quiz needs the permission curriculum.quizzes.manage, which owners and managers hold by default; a teacher who should author quizzes is granted it from Roles & permissions. Grading and publishing quiz results use the same permission as grading assignments (curriculum.assignments.grade, which teachers hold by default).
Creating a quiz. From a section's "Add" menu, choose Quiz. The settings sheet sets: title, section, summary, a time limit in minutes (leave it blank for untimed), attempts allowed (1–20), whether to shuffle questions per attempt, show answers to students — never (only the score), right after they submit, or after the due date — a pass score (leave it blank for a score with no pass/fail), a due date and time, the same drip rules as any unit (available from a date and/or a number of days after enrolment) and an estimated duration. Creating the quiz takes you straight to the question editor.
Questions. A quiz holds four kinds of question: single choice, multiple choice, true/false, and short answer — the one kind a teacher grades by hand, after submission. Every question has a prompt (the same Word-like editor as a lesson, stored as Markdown), a point value, and, for single and multiple choice, at least two options with the correct one(s) marked. Reorder questions with the up/down arrows, edit or delete them; a question's kind is fixed once it exists — delete it and add a new one to change the kind. The editor flags any closed question (single choice, multiple choice or true/false) that still has no correct answer marked.
Publishing. A quiz publishes from its row in the curriculum editor, exactly like any other unit. Publishing is refused while the quiz has no questions, or while any single-choice, multiple-choice or true/false question has no correct answer — the message says which.
Taking a quiz (students, web and mobile app). The unit page shows the quiz's settings at a glance — question count, time limit, attempts allowed, pass score, due date — plus how many attempts are left and a list of previous attempts. Start quiz opens every question on one page, with a countdown pinned at the top when a time limit is set; the deadline is the server's, never the device's clock. Answers save automatically as a student answers them, and Submit quiz asks for confirmation. If time runs out first, the attempt locks where it stands — whatever was saved counts, and the attempt shows as expired. A quiz closes after its due date, and a student who has used every attempt sees that too. Results show the score, Passed/Not passed when a pass score is set, and Awaiting teacher grading while a short answer is still ungraded; whether a student also sees which answers were right and what the correct answer was follows the quiz's "show answers" setting.
Guardians see a child's quiz results read-only, exactly like assignments, and never start an attempt on a child's behalf. The guardian home and the child overview carry a Quizzes tile — due soon / late — next to the Assignments tile.
Grading and the gradebook (teachers). The unit row's Attempts link opens the attempts table, filterable by status; opening a row shows every question with the student's answer next to the correct one, and lets you score a short answer (capped at the question's own points) with optional feedback. Once nothing on an attempt still awaits grading, its score and pass/fail become final. Publish to gradebook writes each student's best fully-graded attempt into the student's group as a quiz exam — the exact same gradebook your groups already use. Running it again after grading more attempts updates the same gradebook entries rather than creating duplicates; a self-paced course has no group, so its students are listed as skipped. If a question's points change after a first publish, the exam's maximum score is corrected on the next publish.
Who is a lesson for?
In a course that has groups (in-person and hybrid), every unit — lesson, assignment or quiz — has an audience, set in its sheet under Who is this lesson for?:
- All groups — the default, and how every unit that existed before this setting behaves: every student enrolled in any group of the course, and their guardians, see it.
- Selected groups — tick one or more of the course's groups. Students outside them, and their guardians, do not see the unit in the course, cannot open it, cannot download its files, submit to it or start its quiz, do not count it in their progress percentage and are not notified when it is published. This is enforced by the server, in the web app, the mobile app and the API alike — not only hidden on screen.
An online (self-paced) course has no groups, so the option does not appear. In the curriculum editor a restricted unit carries a badge naming its groups, and View as group… above the list shows the course exactly as one group sees it (read-only).
Adding groups to a unit that is already published. The students of the groups you add — and their guardians and teachers, if the institute's rule for that notification includes them — receive the same notification the publish sent, under the same rule (on or off, channels, selected courses and groups, each person's own mute). Nobody the unit had already reached is told again — for example a student who is also in a group the unit was already for. Removing groups, saving the same choice again, or adding back a group you removed earlier sends nothing; changing the groups of an unpublished unit sends nothing either, since publishing it notifies its whole audience.
If the last group is deleted
A group that still has students or sessions cannot be deleted, but an empty one can. If that was the only group a unit was for, the unit does not become visible to everyone: it stays restricted, nobody sees it, and the editor flags it as No group left — hidden until you choose groups again or switch it back to all groups.
The task under a lesson
A video lesson can carry one optional task — "This lesson's task" in the lesson sheet, under the files. It is an ordinary assignment attached to the lesson: instructions (same editor), an optional due date, a max score, an allow-late switch and the accepted submission kinds (text, file, link). Students submit and resubmit it exactly like an assignment, you grade it or return it for revision from the same Submissions page (the lesson's row links to it), and Publish to gradebook writes the grades as a Homework exam. Separate assignment units keep working unchanged.
On the learner page the lesson reads top to bottom: the video, the description, Worksheets (the lesson's files), then This lesson's task with its status, due date, submit form, and later the grade and feedback. Handing in the task does not mark the lesson complete — a lesson is completed by watching it or marking it complete. The task follows the lesson: it is published and unpublished with it, and it shows only to the groups the lesson is for. Adding a task to a lesson that is already published announces it to students through the same new-assignment notification.
Removing a task that nobody has submitted to happens at once. If students have submitted, the system tells you how many submissions (and how many graded) would be deleted and asks again; only the second, explicit confirmation deletes them. Grades already published to the gradebook stay there.
Progress and completion
An assignment unit counts as complete the moment a student first submits — resubmitting and being graded afterward never un-completes it. A course's own completion counts every published unit the same way, lesson, assignment or quiz alike.
The Progress tab. A course's Progress tab (teachers and managers) shows a matrix of students by units, with each unit's state for that student — not started, in progress, or completed, assignments and quizzes included — and loads in pages for a course with many students. Opening a student from the matrix takes you to that student's own progress page, the same set of units laid out one at a time.
Permissions
Course authoring uses the existing curriculum.* permissions: curriculum.read to view a course's curriculum, curriculum.write to edit it, curriculum.publish to publish/unpublish a unit. A separate permission, curriculum.assignments.grade, controls grading, returning and publishing-to-gradebook for both assignments and quizzes — a teacher can grade in every course by default, without also holding authoring rights, which stay per-teacher. Authoring a quiz specifically also needs curriculum.quizzes.manage. Managers hold every one of these by default; owners hold everything.
On the phone
A student can read a lesson — including its tables and images — submit an assignment with text or a link, and take a quiz, from the mobile app. Submitting a file from a phone is not available yet; the screen tells the student so rather than hiding the option silently.
See also: Your dashboard on the web for how a student or guardian sees an assignment's due-soon and late counts on their own home screen.