While working on Arivoo School Management System, I ran into a genuinely interesting problem: how schools actually run an exam, end to end — and how much of it could be taken off someone's plate.

The problem

Conducting an exam meant a school admin manually building a date sheet, generating admit cards, allocating invigilators, and mapping students to exam centres. All of it by hand, for every exam, every term.

Talking to the admins doing this, a few things stood out:

  • Exams come in different types — a unit test and a half-yearly exam don't share a marking scheme — and a date sheet has to go out a month in advance, class by class and subject by subject.
  • Classes with clashing subjects have to be mapped together deliberately. If Class 10 has a maths exam, it needs to be scheduled alongside a class sitting a different subject, not another maths paper.
  • There was no real way to tell an invigilator which centre they'd been assigned to. More than once, that meant a last-minute phone call.
  • Rooms could simply run out of space: Class 10 might have 57 students and Class 8 another 48, but a hall only seats 50 (two to a bench). Nobody had a clean way to see that coming.

Working through it

The starting point was letting an admin build a date sheet around exactly which classes needed to sit together — asking for the exam name, the classes and sections involved (multiple selections, not one at a time), and the rest of the exam's details in one pass. If Class 10 has five sections and Class 12 has four, four pairs are obvious and the fifth section either shares a class or gets its own sitting — the tool has to make that visible, not leave it to memory.

Flow diagram: Create Exam Screen leads to Add Exam Details, where the admin sets exam name, classes, sections, exam type, date, grader, and full and passing marks, with an option to copy details across every section
The flow for creating an exam across every section at once.

Room allocation needed the same visibility: a running picture of which rooms exist, how many seats each one has, and what's already been assigned to it before another class gets mapped in.

Flow diagram: Room Master Screen shows how many rooms are occupied or can be mapped to an exam, with an option to add new rooms
Checking room occupancy before mapping a new class in.

And once rooms and exams both exist, the last step is putting students into seats — by class and section, with invigilators assigned to the room they'll actually be standing in.

Flow diagram: Exam allotment screen, showing hall status as allotted, in progress or not allotted, leading to Map Students, where class cards can be dragged and dropped into rooms
Mapping students to an exam centre, room by room.

The screens

Exam creation and scheduling — the exam's details on one side, and the per-section, per-subject grading setup (platform, mode, marks, grader, slot) on the other, with a shortcut to copy a section's setup to every other section sitting the same exam.

Create Exam screen with exam name, school program, class, stream, exam type, category and marks entry fields Exam Details screen showing per-subject grading setup for Maths, English and Bengali Theory across Section A and Section B, with a Copy Data to all Section shortcut

Exam creation & scheduling screen.

Room master — every room the school has, with its seating capacity, plus a simple form to add a new one when a hall is missing from the list.

Room Management screen listing rooms with room number, name and seating capacity of 55 each Add New room panel with fields for building name, floor number, room number, room name and seating capacity

Room master screens.

Student mapping — every class waiting for a seat, how many of its students are already placed, and a room-by-room view of who's been allotted where, down to which range of roll numbers or which invigilator covers that room.

Allocate Hall screen showing classes 10A through 11C with total and remaining student counts, next to a seating map for Room 2, Vivekananda Allocation panel for Class 10th A into Room 2, with options to allocate all students, a roll-number range, or a custom list, plus remaining space and invigilator assignment

Student mapping screen.

It took about two weeks to land on this, final UI included. There may well be a cleaner way to solve it — if you've got one, I'd like to hear it.


Originally published on Medium. Ping me at ankit.yadav383@gmail.com.