The full flow, click by click. Students never sign up “under” a teacher — this is a separate door at /teacher, and every account that comes through it is approved by a person before any student’s name is visible.
Status: this flow is built but deliberately switched off. Teachers are enrolled by hand today, and /teacher/onboarding returns 404 in every deployed build. This page is what turns back on when we open self sign-up.
Verify your school account, create a class, and share the join code with your students.
We’ll send a 6-digit code. Use your school address if you have one — a person checks every account before the roster opens, and it makes that check quick.
Once a student joins your class, this is what you’ll see about them:
Students see this same list and agree to it when they enter your class code. Nothing is shared until they do, and leaving the class ends it.
We sent a 6-digit code to cikgu.nancie@moe-dl.edu.my.
Didn’t get it? Send it again
Your account is live — cikgu.nancie@moe-dl.edu.my is now in the review queue. You can start setting up your class while you wait.
We’ll email you the moment it’s approved.
Tap a step to jump to it
One promise, in order: verify, create a class, share the code. No claiming step and no student data anywhere on this screen — there is nothing here to see yet.
Sign-in is the same email code students use — there is no separate teacher account type. “Teacher” is a role granted on top of an ordinary account.
The white card is the PDPA moment. She sees exactly what she will and won’t get about a minor before she asks any student for anything — and students agree to the same list when they join.
Standard email one-time code. This proves she owns the address. It does not prove she is a teacher — which is the whole reason there is a step 3.
Every account lands here. No email domain skips the queue — not even @moe.gov.my. Students hold official-looking MOE addresses too, so no address can prove on its own that someone teaches.
She is not blocked while she waits. She can create her class and share the join code. What she cannot see is any individual student — names, streaks and per-student progress stay hidden until a reviewer clears her.
So the worst case for a student who fakes their way in is a screen of numbers about a class they are already in.
Who reviews, and how fast? The screen promises “usually within 1 working day”. That is a commitment we currently have no rota or tooling for — the review queue has no owner.
The rule has to live on the server. Everything above is what the teacher sees. The actual gate is the teacher role in the database, and approval must stay a deliberate human act there — not something a sign-up can grant itself.