9. Booking and courses
Modules: Booking, Courses
Two modules that share a shape: both let someone outside your organisation do something useful without an account.
9.1 Booking pages
Module: Booking
A booking page is your availability, published at a link. Someone opens it, picks a slot, books. No account, no email ping-pong.
What you configure: weekly availability windows in your own timezone, how long a slot is, buffer between bookings, minimum notice, and how far ahead people can book. The page can be public at a link, or internal-only for your team to book on your behalf.
What happens when someone books: available slots are computed on the spot — your windows, minus existing bookings and their buffers, minus anything too soon. They enter a name and email; the contact is matched or created. They get a confirmation email with a cancel link. You get notified.
Two things are worth trusting rather than checking.
Double booking is impossible. Not "unlikely" — the database itself refuses to store two overlapping bookings on the same page. If two people click the same slot in the same second, one of them gets it and the other is told to pick again. There is no window in which both succeed.
Daylight saving is handled. Your windows are local wall-clock times — "Tuesdays, 9am to 5pm" means 9am your time, in March and in November. The conversion is computed per date rather than with a fixed offset, which is the mistake that makes most booking tools shift by an hour twice a year.
Your team can also book internally on any page, for when someone phones instead of clicking.
9.2 Courses
Module: Courses
A course with enrolments, tracked through enrolled → in progress → completed, or dropped.
Marking someone complete emits course.completed, which is an automation trigger: send
congratulations, enrol them in an alumni sequence, tag them, issue the certificate.
9.3 Certificates
Certificates are numbered per organisation, gap-free, and publicly verifiable.
Issue one against a completed enrolment. Optionally email it to the graduate with a verification link. Anyone with that link — an employer, an admissions officer, a regulator — opens a public page showing the holder, the course, your organisation, the number and the date.
Nothing else leaks. The verification page shows what is needed to confirm the certificate is real, and nothing about your organisation, your other students, or the holder beyond the fact of the qualification.
There is a print layout.
Why this is worth more than it looks: a PDF certificate proves nothing, because anyone with an image editor can make one. A certificate that can be checked against the issuer in one click is a different object. If you train people, this turns your courses into something they can actually put in front of an employer.