Exams that mark the answer, not the string.
Zayeed authors, delivers and marks assessments on the web, Windows, Linux and Android — against one account and one database, with the network unplugged. H₂SO₄ and H2SO4 are different answers when the author says they are, and every mark comes with the reason it was given.
Three things the alternatives do not do
Formatting is markable
Questions, accepted answers and candidate responses are all marked text. A subscript can be required, tolerated or ignored — the author decides, per item, and the tester beside the editor shows exactly what the marker will accept before anyone sits the paper.
How authoring works →Leniency is a slider
Synonyms, required parts, ordering, typo tolerance and partial credit sit behind a single control — and every score is shown next to the reason it was awarded, because the reason is what makes a lenient mark defensible at appeal.
See the grammar →Every device can type it
The on-screen keyboard travels inside the pack, so a Bangla, IPA or maths paper is answerable on a machine that has never had a matching input method installed. A key emits a string, not a key code, so one key can type a whole cluster.
Layouts and levels →Two rules the whole product obeys
One engine, many shells
Grading lives in a single engine package and is never re-implemented per platform. Divergent scoring between the browser and the phone would be a product-destroying class of bug, so it is made structurally impossible rather than tested for after the fact.
One logical database
Web, Windows, Linux and Android are not four products that exchange files. They are four windows onto the same account. Each holds a full local replica, works offline against it, and reconciles through the sync protocol. Questions, results, media and settings all live in that one schema — settings are rows, not files, which is what makes a multi-device product feel like one product.
Four shells, and what each one is for
| Shell | Built on | Authoring | Sitting | Marking | Offline | Its reason to exist |
|---|---|---|---|---|---|---|
| Web | React + Vite, OPFS SQLite | yes | yes | yes | installable PWA | Nothing to install. Still a full local replica. |
| Windows | Tauri 2 | yes | yes | yes | yes | A real file on disk, and lockdown mode for an exam hall. |
| Linux | Tauri 2 | yes | yes | yes | yes | The same build, the same binaries policy, on lab estates. |
| Android | Expo / React Native | yes | yes | yes | yes | A whole product in a pocket. For most of the world the phone is the only computer. |
| Server | Fastify | n/a | n/a | n/a | n/a | Sync, pairing, join-by-code, pack import/export, the LTI 1.3 tool. |
What you actually get
Grading grammar
Nested boolean expressions, synonym groups, declared part counts, ordering, negative marking and partial credit — with a conformance suite that pins the behaviour.
Read more →Marked text
Blocks, runs, marks, maths and RTF import. The document model is shared by the question, the accepted answer and the response.
Read more →On-screen keyboard
Unicode-first layouts with named levels and right-to-left support. Latin, maths and chemistry, IPA and Bangla are built in.
Read more →Item analytics
Facility, discrimination, KR-20, distractor analysis and attempt series — recomputed from the stored attempts every time, never served from a stale cache.
Read more →Sync & pairing
An HLC-ordered operation log, one schema generated for both SQLite and Postgres, and a six-digit pairing code to make the next device the same library.
Read more →Access arrangements
Extra time, stopped-clock rest breaks, text scale, high contrast and a screen-reader layout — granted on the account, applied by the engine, honoured on every device.
Read more →LTI 1.3 & QTI 3.0
Deep Linking places the activity, launch signs the student in, AGS returns the mark. QTI import and export reports per-item notes instead of losing things quietly.
Read more →A closed action set
Show a message, show media, navigate, branch, set a flag, call a declared webhook. No process spawn, and no extension point that could add one.
Read more →The .mcq container
Encrypted, signed, with an encrypted directory and a per-pack key wrapped into slots. Specified and published with test vectors — and a build gate guarantees you can always export in the clear.
Read more →Import that shows its working
Spreadsheets, Moodle, GIFT, Aiken, QTI, legacy MCQPro banks and pasted text. You see what it would do to your library before a single row is written, and nothing is dropped quietly.
Read more →Certificates that answer to nobody
Signed over their own fields and verifiable ten years from now on a laptop that has never been online. The PDF is written byte by byte, so a name in Bangla prints as its owner spells it.
Read more →Two devices, no server
Two machines on one network sync directly, confirmed once by six digits both screens show. No network at all? A file carries the same changes and merges rather than overwrites.
Read more →Open it, or install it
Nothing to compile. Nothing to configure.
The browser build runs the moment it loads, keeps a full database on the device, and carries on working with the network off. The Windows, Linux and Android builds add a real .mcq file on disk, lockdown mode for an invigilated sitting, and sync straight to another device on the same network with no server in the middle.
Write one question. Mark it four ways.
Install the desktop build, open the browser app, or scan into the Android shell. They are the same library, the same marks and the same rules — with or without a network.