Skip to main content
Case Study

Learning Management System with Cohorts and Certification

Education Laravel React LMS

Self-paced courses and scheduled cohorts look similar from the outside and behave very differently underneath. One needs progress tracked per learner; the other needs deadlines, sequencing and a group moving together. The client's platform had been built for the first and stretched to accommodate the second. ELIVTECH rebuilt it on Laravel with both delivery models as first-class citizens, and made progress granular enough that an instructor can see exactly where learners stop.

The client delivers professional education as both open enrolment and scheduled cohorts for corporate clients. Its original platform tracked completion at course level, which told instructors that learners had abandoned a course but never where. Cohort delivery had been simulated with manually managed groups and spreadsheet-tracked deadlines. Assessment supported only auto-marked questions, so anything requiring judgement was handled by email. Certificates were generated documents with no way for a third party to verify them. ELIVTECH rebuilt the platform with lesson-level progress, cohorts as a scheduling model, mixed automatic and instructor-marked assessment, and verifiable certification, behind a React interface and Elasticsearch course discovery.

At a glance

0 Weeks End-to-End
0 Delivery Models on One Core
0 Assessment Types Supported
0 p95 Course Catalogue Search

The challenge

A self-paced platform carrying scheduled delivery on manual process and goodwill.

Progress tracked only at course level

The platform recorded enrolment and completion and nothing between. Instructors knew which courses lost learners but had no way to identify the lesson where attention failed, so improving a course meant guessing at which part needed rework and re-recording material that may have been fine.

Cohorts simulated with spreadsheets

Scheduled delivery was managed by creating a group, tracking deadlines in a spreadsheet and chasing learners by email. Every cohort repeated the same administrative work, and a client asking about progress mid-programme received an answer assembled by hand rather than read from the system.

Assessment limited to auto-marking

Only multiple choice and similar formats were supported. Written work, case analyses and practical submissions were emailed to instructors, marked outside the platform and typed back in, so the assessment that best demonstrated capability was the assessment the system could not handle.

Certificates that could not be verified

Completion produced a document with a name and a date. An employer wanting to confirm it had to contact the client, who checked manually. The certificate carried no verifiable link to the record behind it, which limited its value to the learner who had earned it.

Video delivery without resumption

Lessons restarted from the beginning on every visit and did not adapt to connection quality. A learner returning to a long lesson scrubbed to find their place, and on a slower connection the video buffered rather than degrading to a lower quality that would have played. Learners on constrained connections were effectively excluded from the longest and most valuable material.

Course discovery by category browsing

Learners found courses through a category tree. Searching by skill, prerequisite level or the topic actually covered within a lesson was not possible, so relevant material went undiscovered and the catalogue appeared smaller than it was.

Our solution

One core that treats self-paced and cohort delivery as equals, with progress recorded where it can be acted on.

Learning Model and Delivery Design

Four weeks with instructors and programme managers separating what is genuinely common between self-paced and cohort delivery from what differs. Content, assessment and certification are shared; scheduling, sequencing and progress expectations differ. That distinction became the domain model, replacing an architecture where cohort behaviour was layered on top of self-paced assumptions. It also settled a question the previous platform had answered inconsistently, which is what a deadline means for a learner who joined a cohort late.

Laravel Core with Lesson-Level Progress

Progress is recorded per lesson and per assessment attempt rather than per course, including video position and furthest point reached. Cohorts became a scheduling layer with release dates, deadlines and prerequisites, so a course can run self-paced and as a scheduled programme simultaneously from the same content without duplication. Editing a lesson updates it everywhere it is used, with in-flight cohorts pinned to the version they started on so a mid-programme change cannot invalidate work already submitted.

Mixed Assessment and Verifiable Certification

Assessment covers auto-marked formats and instructor-marked submissions in one model, with rubrics, attempt limits and moderation. Marking is queued and distributed across available instructors rather than assigned to whoever authored the course, which stopped submissions accumulating behind one person during a busy cohort. Certificates carry a verification identifier resolving to a page that confirms the award and the criteria met, so a third party can check authenticity without contacting the client and the learner controls what is shared. Revocation is supported as a state on the award rather than by deleting the record, so a withdrawn certificate resolves to an explanation instead of a broken link.

React Learning Experience and Course Discovery

The learner and instructor interfaces are React applications over a versioned API, with adaptive video streaming, accurate resumption, keyboard-navigable players and captions throughout. Elasticsearch indexes courses, lessons and topics so learners search by skill and subject rather than browsing a category tree. Instructors see per-lesson drop-off directly, including the point within a video where attention falls away, which turns course improvement into a targeted edit rather than a re-recording.

Technology stack

Laravel PHP 8 React MySQL 8 Elasticsearch Adaptive Video Streaming Laravel Queues Redis AWS ECS Fargate Amazon RDS Amazon S3 Amazon CloudFront Amazon CloudWatch Terraform CI/CD Pipeline

Results

Measured once both delivery models were running on the rebuilt platform.

0 p95 Course and Topic Search
0 Certificates Independently Verifiable
0 Cohorts Tracked Outside the Platform
0 Content Source Serving Both Delivery Models

Before and after: platform engineering measures

Before
  • Progress recorded only as enrolment and completion
  • Instructors unable to identify where learners stopped
  • Cohorts managed as groups plus spreadsheet deadlines
  • Assessment limited to auto-marked question formats
  • Written work marked over email and typed back in
  • Certificates verifiable only by contacting the client
  • Course discovery limited to browsing a category tree
After
  • Progress recorded per lesson and per assessment attempt
  • Per-lesson drop-off visible to instructors directly
  • Cohorts modelled with release dates, deadlines and prerequisites
  • Auto-marked and instructor-marked assessment in one model
  • Submissions, rubrics and moderation handled in platform
  • Certificates carry a verification identifier third parties can check
  • Elasticsearch discovery across courses, lessons and topics

Project timeline

Weeks 1-4

Learning Model and Delivery Design

Instructor and programme manager workshops, separation of shared content concerns from delivery-specific scheduling, assessment and certification requirements, and the target Laravel and React architecture.

Weeks 5-12

Core Platform and Progress Model

Laravel domain across courses, lessons, enrolment and progress, lesson-level and attempt-level tracking, versioned API, MySQL schema supporting both delivery models, and the deployment pipeline on AWS.

Weeks 13-19

Cohorts, Assessment and Certification

Cohort scheduling with release dates, deadlines and prerequisites, mixed assessment model with rubrics and moderation, submission handling, and verifiable certification with a public verification endpoint.

Weeks 20-26

Learning Experience and Discovery

React learner and instructor interfaces, adaptive video streaming with accurate resumption, accessible player with captions and keyboard navigation, Elasticsearch indexing across courses, lessons and topics, and instructor analytics.

Weeks 27-30

Migration and Programme Rollout

Content and historical progress migration with completion records preserved, accessibility audit against the learning journey, load testing on cohort start peaks, then rollout by programme with the legacy platform retained for in-flight cohorts.

Key takeaways

What shaped the engineering decisions

  • Separate content from delivery: Duplicating a course to run it as a cohort was rejected because the copies immediately diverge. Modelling scheduling as a layer over shared content lets one course run both ways and stay consistent.
  • Record progress where it can be acted on: Course-level completion tells an instructor a course has a problem but not where. Lesson-level and attempt-level progress made improvement a targeted exercise rather than a rebuild.
  • Assessment must include judgement: Supporting only auto-marked formats pushed the most valuable assessment out of the platform. Bringing instructor-marked submissions in with rubrics and moderation kept the whole record in one place.
  • Make certificates verifiable by a third party: A document nobody can check is worth less than the learning it represents. A verification identifier resolving to a confirmation page removed the manual check and gave the learner something they control.
  • Preserve historical completion through migration: Learners hold certificates issued by the old platform. Migrating historical progress and keeping prior awards resolvable meant the change did not invalidate anything anyone had already earned.
  • Treat accessibility as part of the learning experience: Captions, keyboard-navigable players and readable contrast were built into the player rather than added afterwards, because a learning platform that excludes learners has failed at its function.
Where this platform goes next. With progress recorded per lesson and both delivery models on one core, the client can improve courses from evidence rather than intuition. The team is building toward adaptive pathways that respond to assessment performance, cohort analytics that let corporate clients see programme progress themselves, and skill-level tagging that connects course discovery to the capability a learner is trying to build.

Want results like these?

Let's discuss how ELIVTECH can drive measurable outcomes for your business.

Start your project