ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
CID-seat anonymous grading tool
Translation pending
EducationTypeScript · JavaScriptGitHub @Imperial-Business-SchoolOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
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.