ZAYEED preview
Zayeed v0.1.0

ASSESSMENT PLATFORM

One engine · One database · Four shells

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.

Offline-first Web PWA Windows & Linux Android LTI 1.3 QTI 3.0 Self-hostable
engine — grade()
# item 14 — short answer, leniency 3 of 5 accept "sulfuric acid" | "sulphuric acid" | H₂SO₄ candidate "sulphuric acid"   whitespace collapsed spelling variant accepted subscripts not required by author   => 1.0 / 1.0 matched synonym 2 of 3 # identical on web, desktop and Android
4Shells, one engine
1Logical database
30,240Conformance cases
0Network calls required
// 01 — the difference

Three things the alternatives do not do

All features →
// 02 — architecture

Two rules the whole product obeys

Platforms & sync →
Rule 1

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.

Rule 2

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.

// 03 — where it runs

Four shells, and what each one is for

Details →
ShellBuilt onAuthoringSittingMarkingOfflineIts reason to exist
WebReact + Vite, OPFS SQLite yesyesyesinstallable PWA Nothing to install. Still a full local replica.
WindowsTauri 2 yesyesyesyes A real file on disk, and lockdown mode for an exam hall.
LinuxTauri 2 yesyesyesyes The same build, the same binaries policy, on lab estates.
AndroidExpo / React Native yesyesyesyes A whole product in a pocket. For most of the world the phone is the only computer.
ServerFastify n/an/an/an/a Sync, pairing, join-by-code, pack import/export, the LTI 1.3 tool.
The phone is not a second-class client. It draws its questions through the same sets, marks them with the same engine, applies the same rules and reports the same item statistics as the laptop that wrote them — and it carries the pack's on-screen keyboard, so a paper in a script the phone has no input method for is still answerable.
// 04 — the shape of it

What you actually get

Full list →
01

Grading grammar

engine

Nested boolean expressions, synonym groups, declared part counts, ordering, negative marking and partial credit — with a conformance suite that pins the behaviour.

Read more →
02

Marked text

doc

Blocks, runs, marks, maths and RTF import. The document model is shared by the question, the accepted answer and the response.

Read more →
03

On-screen keyboard

keyboard

Unicode-first layouts with named levels and right-to-left support. Latin, maths and chemistry, IPA and Bangla are built in.

Read more →
04

Item analytics

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 →
05

Sync & pairing

db

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 →
06

Access arrangements

engine

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 →
07

LTI 1.3 & QTI 3.0

server / qti

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 →
08

A closed action set

security

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 →
09

The .mcq container

format

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 →
10

Import that shows its working

import

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 →
11

Certificates that answer to nobody

certify

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 →
12

Two devices, no server

net

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 →
// 05 — from zero

Open it, or install it

All builds →

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.