Lexiverse
Lexiverse - AI contextual reading engine for English learners. Your next article is your next review.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
EMMS — Exam Marking and Moderation System
A small web app that replaces the email-spreadsheet workflow used for anonymous
exam marking at university. Students write their seat number on their
paper; admins hold the seat → CID mapping; markers only see seat numbers
when entering grades.Read the full README ↗A small web app that replaces the email-spreadsheet workflow used for anonymous exam marking at university. Students write their seat number on their paper; admins hold the seat → CID mapping; markers only see seat numbers when entering grades.
/admin, creates an exam (entering primary and secondary
marker emails up front), uploads a two-column CSV of seat_number, cid
pairs, then clicks Start primary marking./m/<examId>/<token>). The admin sends the primary URL to the first
marker by whatever channel they prefer.There is no login. Admin pages are open at /admin; marker pages are
gated by an unguessable token in the URL. Rely on the obscurity of the
deployment URL for testing. For production use, put the app behind your
SSO of choice (e.g. Imperial federated login) before sharing the admin
URL widely.
pg (any provider — Neon, Supabase, RDS, local)The only required env var is POSTGRES_URL (auto-set when you add a
Postgres integration during the deploy wizard).
PUBLIC_APP_ORIGIN (production)Marker URLs baked into notification emails default to whatever
hostname served the request that triggered the email. On Vercel that
resolves to a *.vercel.app alias, which is not what we want reaching
markers.
Set PUBLIC_APP_ORIGIN on the Production environment only to pin
every outbound link to the canonical domain:
PUBLIC_APP_ORIGIN=https://ib-marking.imperial.ac.uk
Leave Preview and Development unchecked so those keep using their own hostnames. Redeploy Production after saving so the new value is picked up. Preview links and local dev continue to resolve to the request host automatically.
npm install
export POSTGRES_URL="postgres://user:pass@localhost:5432/cid_seat"
npm run dev
Open http://localhost:3000.
The exported file is an .xlsx (Canvas Gradebook Import accepts both
.csv and .xlsx). Canvas's standard import headers are used:
Student, ID, SIS User ID, SIS Login ID, Section, <Assignment column>
Only SIS User ID (the CID) and the assignment column are populated; Canvas
matches students by SIS User ID. The SIS User ID column is Text-formatted
(@) so Excel does not strip the leading zero from CIDs like 0123456
when the admin opens the file to review before uploading — the Canvas
matcher requires the exact CID.