For school administrators

Getting a school set up

Getting a school set up

What a school has to have in place before EduSpaze is useful to it, how the platform walks them through it, and when it steps out of the way. Last updated 2026-09-06.

1. The shape of it

A school signing in for the first time lands on /school/start, not the dashboard. It stays the first screen until somebody says the school is set up, or skips. Both decisions are reversible from School Settings, and skipping loses nothing.

The redirect happens only from /school. Every other page stays reachable, because the checklist's own links go to them — a checklist that traps you on itself is a worse first experience than no checklist.

Only somebody holding school.onboarding VIEW is redirected. A teacher signing in on day one goes straight to their dashboard; setting the school up is not their job.

2. What we need from a school

Eleven steps in four phases. Essential steps must be done before the school can mark itself set up; optional ones never block it.

Your school

StepEssentialWhy
Complete the school profileyesSegment, size, curriculum and country are what every recommendation is matched on. A thin profile gets thin matches.
Academic year and termsyesWithout them the platform guesses a calendar year, which is wrong for a September school — and that guess is the label vendors see on every class. Term dates also open the termly checklist.
Verified email domainsyesStaff sign-in is matched to the school's domains. SSO with Google or Microsoft sits on top and is optional; passwords keep working either way.

Your people

StepEssentialWhy
Invite colleaguesyesOne account is a single point of failure. At least one other person, with a role that says what they may do.
Bring in pupilsyesImport the roster or connect the SIS. Pupil ids come from the school's own system and are never renumbered.
Classes, with pupils in themyesClasses are how a vendor places a pupil and how a teacher reaches their own group. A pupil in no class is invisible to both.
Connect the student information systemnoThe roster refreshes itself on a schedule instead of by hand (docs/sis-sync.md).

What you need

StepEssentialWhy
The needs surveyyesWhat the platform reasons from: what the school already runs, what is missing, the budget cycle, who decides. Nothing useful is recommended before it.
Look at your recommendationsyesMatches appear as soon as the survey is in. Answering a few sharpens the next set.

When you are ready

StepEssentialWhy
First challenge statementnoA named problem, not a category browse, is what gets a specific proposal rather than a brochure. The highest-signal thing a school does here.
Decide about parent accessnoGuardians see how long their own child spent in an app, never what they did. Off until the school turns it on.

3. Done means done

A step is complete because the work is complete, observed from the school's own records: pupils exist, a term exists, the survey was answered, a colleague has an account. Not because somebody ticked a box.

A checklist that can be ticked without doing the work is a checklist that lies, and the school finds out weeks later when a vendor cannot place its pupils. tests/onboarding.test.ts refuses a manual tick on any observable step.

Two steps are exceptions, and honest ones: looking at your recommendations and deciding parent access is not for you leave no trace, so both are marked by hand.

Each step also shows *where the school actually stands* — "3 of 4 details, 2 curriculums", "12 classes, nobody in them" — rather than a bare tick. The gap is the useful part.

4. Finishing, skipping, coming back

ActionEffect
We're set upAvailable once every essential is done. The dashboard becomes the landing screen.
Skip for nowAvailable always. Same effect, no judgement, nothing lost.
Show it on sign-in againSchool Settings → Getting set up. Puts the checklist back.

Finishing does not rewrite history: the stored record says when and by whom, and the steps keep reporting honestly afterwards, so a school that marked itself complete with a half-filled profile still sees the profile step as incomplete when it comes back.

Everything lands on the school's own audit chain: school.onboarding_step, school.onboarding_completed, school.onboarding_skipped, school.onboarding_reopened.

5. Permissions

ModuleVIEWEDIT
school.onboardingsee the checklist and where the school standstick a manual step, finish, skip, reopen

Held by the school administrator role. Anyone else works through the same portal without ever seeing the checklist, and without being redirected to it.

6. Adding a step

A step is an entry in ONBOARDING_STEPS (lib/school/onboarding.ts) plus a line in the signal gather. The harness holds two rules: every step must link somewhere a module actually covers, and every step must say why it matters rather than only what to do — a checklist of instructions with no reasons is one people click through rather than act on.

Source: docs/school-onboarding.md in the repository. Last updated with the code it describes.

Getting a school set up — EduSpaze