EHS Training Platform

A simple, custom platform that replaced a bloated off-the-shelf LMS. Only what they use, nothing they don't.

Session pass · Case study 02Status: Live since May 2026

Client
EHS Guru
Platform
Web app, any browser
Stack
Next.js · Supabase · Zoom
Industry and Service: see the brief

Access: admin · trainer · learner · guestOn our maintenance plan

EHS Training Platform: an admin cohort page, the trainer dashboard and the class calendar

01 · The brief

Live classes, run on their own platform

Industry
Environment, health and safety training
Service
Web platform design and development
Run sheetEHS Training Platform
ClientEHS Guru
StatusLive since May 2026
What they needed

What EHS Guru needed

EHS Guru is an environment, health and safety company that creates its own courses and teaches them live on Zoom, in batches of nearly 80 learners. Their off-the-shelf learning platform came loaded with features they never used, at a price to match, under someone else’s brand. They wanted only the core, on their own domain, so they decided to build their own and came to us.

What made it hard

The problem with Zoom

The class itself happens inside Zoom, so attendance and recordings have to be rebuilt from Zoom’s notifications, which can arrive late, twice or out of order.

What we built

What went live

One platform for admins, trainers, learners and webinar guests: courses, modules and batches, one-click Zoom classes, automatic attendance, every class recorded into a private library, assignments that trainers review, engagement analytics, and free webinars that bring in new learners.

  • 4audiences — admin, trainer, learner, guest
  • ~80learners in a single live class
  • 7integrations — Zoom, email, WhatsApp and more
  • Livesince May 2026

02 · The platform

Four audiences, one system

Admins run the schedule, trainers teach, learners join from any browser, and guests come in through free webinars. Each sees only what they need.

Admin training sessions list with Start Session buttons
AdminOne-click classes. Schedule a session and the Zoom meeting is created for you.
Trainer dashboard showing class roster and assignments
TrainerYour classes, your students. See who attended, review assignments, and find your recordings in one place.
Learner dashboard with progress, upcoming sessions and recordings
LearnerJoin from the portal. Nothing to install, no Zoom sign-up. Your progress, recordings and assignments in one place.
Admin user management with roles and CSV import
AdminEveryone in one place. Roles, batches and bulk CSV import.
Free sessions portal for webinar guests
GuestFree webinars. Sign up without an account, get reminders, come back as a learner.

03 · Showtime

What happens when a class goes live

Admin training sessions list
  1. Before

    Reminders go out

    Email and WhatsApp reminders land at the right time in each learner's time zone.

  2. T-0

    Admin clicks Start

    The Zoom meeting is ready, and it shows the trainer's name before they walk in.

  3. Join

    Learners join

    From the portal, in any browser. Their attendance starts counting the moment they click Join.

  4. Live

    Every minute counted

    Every join and leave is recorded in one step, so a duplicate notification from Zoom can never count twice.

  5. Pause

    Recording stops by accident

    It restarts on its own, and every segment of the class is kept, in order.

  6. After

    Class ends, video lands

    The best video file is copied into EHS Guru's own storage, published when the admin is ready, and watch time is checked on the server.

04 · The hard parts

The reliability log

Zoom sits at the centre of every class, and it doesn't always behave. These are the problems we designed for before a single paid class ran.

ehs-training-platform · statusRecording safeguards on
Recordingduring class

A recording stops mid-class

Cause
Trainers pause, or stop by accident, and Zoom splits the recording.
Fix
Recording restarts automatically, and every segment is kept in order.
Resolved
Attendanceon join

“Who is ‘John’ in Zoom?”

Cause
People type their names differently when they join.
Fix
Matched by email first, then by name within the enrolled batch.
Resolved
Sessionon leave

A class that ends too early

Cause
A learner joining early and leaving, or a trainer testing the link.
Fix
The class ends only when it really ends.
Resolved
Watch timerecordings

Watch time that can’t be faked

Cause
A learner could skip ahead, or leave a recording playing in a background tab.
Fix
Skipped parts never count, the video pauses when the tab is hidden, and the server rejects any stretch it couldn’t have played.
Resolved
Playbacklibrary

Class videos loading slowly

Fix
Moved playback to a fast delivery network, measured before choosing: 0.12 → 0.90 MB/s.
7.5×faster video playback

Want a platform
built like this?

Start with a free 20-minute call about your idea.

Book a free 20-minute call

05 · Judgement

What we left out, on purpose

  • Cut 01

    Payments, kept offline

    EHS Guru’s choice. It kept the build on teaching, not billing.

  • Cut 02

    Waiting for WhatsApp

    Email went live first. WhatsApp followed once Meta approved the templates, so launch was never held.

  • Cut 03

    No mobile app

    The platform works in any browser on any device. A native app wasn’t necessary for launch — and would have doubled the build time for the same result.

06 · Result

Live since
May 2026
  • ClassesRuns EHS Guru's paid live classes, in batches of nearly 80.
  • BrandOn their own domain, under their own name.
  • After launchStill on our monthly maintenance plan.
  • EfficiencyOne-click classes, automatic attendance, and all recordings kept.

Under the hood

How it works, in plain words, with the technical name underneath.

  • Opens in any browserBrowser
  • The platform itselfNext.js on Vercel
  • Everything the screens ask for52 API routes
  • Learners, batches, attendance, videosSupabase, 27 tables
  • Zoom reports who joined and leftZoom events
  • Every message kept on recordWebhook log
  • Minutes counted onceAttendance in one step
  • The best video file chosenRecording picker
  • Kept in EHS Guru's own storageCloudflare R2
  1. Every minute counted once. When Zoom repeats a message or sends it late, attendance still adds up exactly.
  2. Recordings copied into EHS Guru's own storage. Their video library doesn't depend on Zoom's.
  3. Every Zoom event logged. Any class's full history can be traced.
  4. Who can see what is checked three times. At the door, on every page, and in the login itself.
  5. Quality: automated tests on the Zoom and recording logic, an alert whenever something breaks, and limits that stop repeated login attempts.

07 · Conclusion

What this build says about yours

End of showOff air · still running

  1. i.

    We stay after launch

    EHS Guru is still on our maintenance plan, and the platform keeps improving alongside real classes. Our work doesn’t stop when the first version goes live.

  2. ii.

    We make the tools you already use dependable

    Zoom, email and WhatsApp stayed. We built the platform that makes them work together reliably.

  3. iii.

    We measure before we choose

    Video playback was tested before choosing the implementation — resulting in 7.5× faster delivery.

The same goes for your product: a clear scope, a new working build every week, and code you own.

Book a free 20-minute call