Skip to content
Ayoub
Back to work
Platform

Assessment platform

Everyone sits the same paper, under the same clock

An exam platform the institute runs itself, from question bank to results.

  • Technical education
  • 2025
  • Live
  • Client work
  • Client not named

At a glance

What it is
An institute had to examine its final-year students and rank them for prizes. I built the platform that ran and marked those exams.
Who it is for
Technical education
Year
2025
Status
Live
What I owned
Everything technical

The situation

Two years after I delivered their administration system, the same technical institute came back with a new request: examine the final-year students across several modules, mark every paper, and rank the students for real prizes. On paper that is slow to run, slower to mark, and the ranking is open to challenge.

What was actually wrong

A ranking that hands out prizes only holds if every student sat the same exam under the same conditions. That is the hard part. A clock running on the student's own laptop, a paper that can be reopened, a question edited after marking that moves an old mark: any one of those is enough to make the whole ranking arguable.

What we were building inside

  • The ranking hands out real prizes, so it has to stand up to the objection of the student who came second.
  • One attempt per exam. No retry, and no reopening a paper once it is handed in.
  • Time cannot be left to the student's machine. The clock that governs the exam has to sit where no hand can reach it.
  • The institute's staff add their own modules and questions, without coming back to me for every change.

How I approached it

I trusted nothing the student's hand can reach. The server fixes the deadline the moment an attempt starts, the countdown on screen is only a display of it, and every save is checked on the server before it is accepted. Answers are saved as they are written, so a laptop that dies mid-paper costs its owner the walk back to the invigilator, not the work.

Each paper keeps its own copy of the questions and the marking keys exactly as they were handed to the student. Correcting a question next term cannot move a mark given this term. Even the order of questions and options is generated from a stored seed, so the exact paper one student saw can be rebuilt months later if there is an appeal.

The other half of the job was making myself unnecessary. Programmes, levels, modules, cohorts, question banks and grade scales are all created by the staff, on their own screens. That is why the system kept growing after I handed it over.

What it does

An exam platform the institute runs itself, from question bank to results.

  • A clock the server owns

    The deadline is computed and stored on the server the moment the attempt starts, and every save is measured against it. A machine an hour slow, by accident or on purpose, buys not one minute.

  • A paper nobody can change after it is handed in

    Every attempt keeps its own copy of the questions and marking keys as the student saw them. Editing the question bank later touches no old mark, and the exact paper can be rebuilt for any appeal.

  • Nine question types, each marked its own way

    Multiple choice, true or false, numbers with a tolerance, short answers with accepted spellings, blanks each carrying its own weight, matching, ordering, and essays that go to a human marker. Partial credit where partial credit means something.

  • The invigilator sees the sitting as it runs

    Who has started, who is close to their deadline, who has stopped answering: all in front of the invigilator while the sitting runs. Extra time is granted or an attempt voided mid-exam, and every action is recorded with its author and its reason.

  • Results in the institution's own language

    Out of twenty with a mention, a letter, a percentage, or pass and fail. The grade scale is a table the staff edit, and the system refuses a table with a gap or an overlap in it.

  • It says whether the paper was any good

    After marking, every question gets a difficulty figure and a measure of how well it told the strong students apart, and each wrong option is analysed for whether it fooled anyone. A question the best students all missed usually has the wrong key.

The decisions

Every one of these had a real alternative and a real cost. Both are written down.

  1. 01The call

    Where does the exam clock live?

    What I chose

    On the server. The countdown in the browser is only a display.

    Why

    A machine in an exam hall can be an hour slow, by accident or on purpose. If the browser owns the clock, the fastest route to extra time is changing the time. The server fixes the deadline once and checks every save against it, so everyone gets the same answer to how much is left.

    What I gave up

    On a poor connection the countdown can lag a second or two, and a student who loses their session loses that time. It is the same rule as a paper exam, and it still has to be explained on the day.

  2. 02The call

    One attempt, or a second chance?

    What I chose

    One attempt, and a handed-in paper does not reopen.

    Why

    The ranking hands out real prizes. A second attempt is a different exam, so the moment one student gets one, the ranking is comparing two different things. Every other rule was open to discussion. This one was the product.

    What I gave up

    A real accident, a power cut or a crashed browser, cannot be fixed by quietly starting again. Someone has to void the attempt on the record, with a written reason. That is slower, and on the day nobody likes it.

  3. 03The call

    Who adds the next module: the institute, or me?

    What I chose

    The institute. Programmes, levels, cohorts and questions are all in its staff's hands.

    Why

    A system where every change is a phone call to the developer stops being used the week the developer is busy. Letting the staff build their own structure cost far more to build, and it is the only version of this that outlives me.

    What I gave up

    Far more to build, and more ways to go wrong, because staff can now create a structure that makes no sense. The other road had fewer sharp edges, and it would have needed me forever.

  4. 04The call

    What happens to a mark when the question is edited later?

    What I chose

    Nothing. Editing a question that has been sat creates a new version of it, and the old one stays exactly as the papers were marked against it.

    Why

    Fixing a question this term must not move a mark given last term. Without that, editing the question bank becomes a silent rewriting of history, and the first to notice is a student whose result changed on its own.

    What I gave up

    One question exists in several versions in the database. That costs storage, and asking how a question performed becomes a question about versions.

How it moved through the stages

You tell me the idea

They had worked with me before, so we started from the exam, not from a brief: which modules, how many students, what the marks decide. That the ranking carried prizes came out early, and it became the rule every later rule was measured against.

You see the real screens

I drew the system around two moments that have to hold: the moment a paper reaches a student, and the moment a mark is given. The clock with the server, the paper keeping its own copy, and everything else arranged behind those two.

You watch it being built

I built it in the order the institute would use it. The question bank first, so the staff could start writing while the exam screen was still being built, and one module went the whole way through before the rest were added.

You launch, and I stay

The exams ran for real, and the system still runs. What a first real sitting exposes is mostly not bugs. It is the settings nobody can guess in advance, such as how much a student may see once results are out.

See all six stages in full

What exists now

Delivered in 2025 and still in use, and the institute has added modules of its own since. That is the part that matters: nobody had to ask me first. I then took the same system further and generalised it into a platform where any institute or university opens its own account and runs its programmes, cohorts, question banks and exams in full, each institution sealed off from every other.

Revenue and growth belong to the client. I do not publish numbers I did not measure myself.

Screens

  • Assessment platform - screen 1
  • Assessment platform - screen 2

Built with

  • Next.js
  • React
  • TypeScript
  • PostgreSQL
  • Prisma
  • Auth.js
  • Zod
  • Tailwind CSS
  • shadcn/ui
  • Radix UI
  • Vitest
  • Vercel

What you can check yourself

Other work

LiveMy own project2025

Hiring platform

A marketplace where hiring and freelance work run on the same four steps.

Next.js · React · TypeScript · PostgreSQL · Prisma · Neon

Read the full story
LiveMy own project

Smart booking platform

Booking for beauty centres: WhatsApp at the front, a full system behind it.

Next.js · TypeScript · Prisma · Neon · Better Auth · WhatsApp Business API

Read the full story
See all work
01 · You tell me the idea

At the same point this started from?

An idea, no technical co-founder, no obvious next step. That is the normal starting position.

Tell me about your idea