integration · laravel · 2023
School rosters, turned into course accounts at sign-in
A US online course provider
A white-labeled portal that connects schools and districts to an online course system through Clever. A teacher or district administrator signs in with the Clever account they already have, their roster comes across, and their students are provisioned as accounts in a separate course platform.
The operation
A US company sells online courses to schools. Those schools and districts already keep their student rosters in Clever, the identity service most of them sign into anyway.
This portal is where the two meet. A teacher or a district administrator signs in with the Clever account they already have, their roster comes across, and their students are provisioned as accounts in the course system, which is a separate platform with its own API.
It was built as a new route to market rather than as a replacement for something slower. There was no self-service path from a school roster to a course account before it existed, and the portal also captures details from educators who are still only looking, which feeds the sales side.
The part that was actually hard
One door, five kinds of person behind it. A teacher, a student, a district administrator, a district student and an internal admin all arrive through the same Clever sign-in, and the system has no idea which one it is dealing with until Clever answers. Only then can it work out what that person is allowed to see, whether they are new and need setting up, or returning and need their class list refreshed. Each of the five gets a different system on the other side of the same door. Getting that wrong does not produce an error message. It shows somebody a class list that is not theirs.
The account has to end up somewhere else. Creating a student here is only half the job. They also have to exist in the course platform, which is a separate product with its own rules, and what gets sent across changes depending on whether the school is paying or the student is. The class list arrives in the background, the teacher decides who gets activated, and only then is the account created on the other side. Each system keeps a reference to the other afterwards, so a student who ends up in one and not the other can be found deliberately rather than discovered by a parent.
Two audiences, one system. The portal is white-labeled, so it can be sold under more than one brand, and underneath every brand run two separate worlds: schools with their teachers and students on one side, districts with their administrators and students on the other. They need different screens and different rules and they share one code base, which is cheaper to run and considerably harder to build. Districts can also load students in bulk from a spreadsheet, checked for duplicates before anything is created, with the result sent back to whoever uploaded it rather than left for them to find.
Where it stands
Built across about ten months and went live in 2023.
Different business, same shape of problem?
Every system written up here started with somebody describing an operation that had outgrown the way it was being run. If that sounded familiar, tell me how yours works today.
Talk through your version