2024 to now
Client systems at havis.dev
Two builds from my own practice: a learning platform for a university department, and a website rebuild for a dance awarding body.
- Laravel
- Livewire
- Canvas LMS API
- OAuth
- Next.js
Alongside employment I run havis.dev, a small practice building web systems for organisations. Two builds from it say the most about how I work. The first client isn't named here.
A learning platform for a university department
The department was delivering lectures as email attachments and shared-drive links, taking attendance on paper, and keeping records across four spreadsheets that each held a slightly different version of the truth. I built one platform to replace all of that, now used by around 200 students and staff.
- Sign-in through Canvas over OAuth, matched on Canvas ID, so nobody has a second set of credentials to forget.
- Attendance by scan. A two-step QR code and short-code check-in, restricted to campus IP ranges, so attendance is recorded in the room rather than typed up later.
- Structured lessons with video served through a protected streaming pipeline instead of shared as files.
- An assessment engine, added later: quiz authoring, timed sittings, automatic and manual marking, and grades passed straight back to the Canvas gradebook. It has a substantial automated test suite, because losing a student's submitted answers is not a bug you find by clicking around.
- Roles and consent: administrator, teacher and student permissions, and a consent step before any analytics are recorded.
Laravel and Livewire, integrated with the Canvas LMS API.
A website rebuild for a dance awarding body
Independent Dance Training is a UK dance examination awarding body whose site buried its qualifications, syllabi and exam resources behind confusing navigation. I rebuilt it around the journeys people actually make: a teacher finding a syllabus, a student checking exam requirements, a new visitor looking at membership. I had built the platform behind their exam and membership workflows earlier in my career, so this was a return to a domain I know well.