How to migrate an institute off spreadsheets
An LMS migration plan in four steps: what to move first, what to leave behind, and why the order matters more than the tooling.
Guide
Role-based access control for an institute, explained without jargon — and why a role name should never appear anywhere in the code.

Most software gives you three roles and hopes your institute is shaped like the one the developers imagined. It never is. The fix is not more roles; it is separating the two things that get conflated.
A permission is a key like course.course.publish or finance.invoice.refund: module, resource, action. There are 272, each described for a school administrator rather than an engineer, because the person choosing them is not a developer.
Teacher, Academic Head, Finance Officer. Eleven editable templates ship, and each institute gets its own copies rather than sharing ours. The important part: nothing in the code reads a role’s name. A guard asks "does this person hold finance.invoice.refund?", never "is this person a Finance Officer?".
That is what lets you invent a role we never thought of — a Vice Principal who approves courses but not fees, a part-time counsellor who can add enquiries but not spend a seat — without waiting for us.
Hiding a button is a courtesy, not a boundary. Every server route carries its own permission check or an explicit public marker, and a coverage check fails the build otherwise. If the interface hid a button and the server did not check, anybody with a browser console would find it in an afternoon.
An LMS migration plan in four steps: what to move first, what to leave behind, and why the order matters more than the tooling.
Online exam integrity without proctoring software: what a browser can honestly report, what it cannot, and what actually reduces cheating.
Nine WCAG procurement questions that separate a real accessibility programme from a paragraph in a sales deck — with our own answers.
A hundred seats, twenty-five courses and no conversation. If you would rather see it driven by someone who knows it, that takes twenty minutes.
Or open the sandbox (opens in a new tab) and click around first. No form.