U-Smile · 2024

U-Academy — E-learning Platform

An internal LMS tracking each learner's progress down to the lesson, and issuing reproducible certifications.

Role Back-end developer
Period 2024
Sector Internal training
Context Salaried role, product team
01

The context

Consultants across the network must be trained on products and procedures that change constantly, and that training must be certifiable. A dedicated platform was needed to organise learning paths, measure real progress and issue certifications.

The specific requirement lies in tracking granularity: knowing a consultant "started a module" has no value; knowing they completed a specific lesson on a specific date does.

02

What I built

Structured learning paths

categories, modules, courses, chapters and lessons, with multiple media types.

Fine-grained progress tracking

completion state recorded at every level of the pedagogical hierarchy.

Quiz engine

questions with predefined answers, controlled sequencing and retention of submitted answers.

Certifications

certificate templates and named PDF generation.

Goals and leaderboards

individual statistics, achievements and rankings.

Events and announcements

sessions, personal calendar and communications.

Generated API documentation and shared types with the front-end.

03

Architecture & technical decisions

Progress tracking is modelled with a join table at each level (module, chapter, lesson, quiz). It is more verbose than a single percentage stored on the enrolment, but it is the only way to answer "what did this person actually complete?" precisely — the question a training audit asks.

Content durations are extracted automatically from audio and video media on import rather than typed in: manually entered data drifts, and then distorts every training-time calculation.

The API contract is generated from the code, with shared types on the front-end. On an application rich in nested entities, that removes an entire class of integration errors.

Certificates retain their generation data, not just the output file, so a document can be regenerated identically or verified later.

04

Technical challenges

A deep hierarchy. Five nested levels make every progress query expensive if written naively — aggregations and eager loading are structural here.

Content that evolves. Editing a course already in progress must not invalidate acquired progress or issued certificates.

Quiz fairness. Controlling question sequencing and retaining every answer so a result can be contested.

Meaningful leaderboards. A ranking motivates only if it stays readable and honest — hence prepared aggregations rather than on-the-fly computation.

Exports. Excel extractions for administrative follow-up, generated in the background so the interface never blocks.

05

Complete tech stack

Back-end

Laravel 10 PHP 8.1 REST API Sanctum MySQL Roles & permissions

Learning

Quiz engine Progress tracking PDF certifications Statistics

Tooling

Generated OpenAPI Shared TypeScript types Excel export Media analysis

Infrastructure

S3 Transactional email Queues Pest

Have a similar project in mind?

Let's talk it through — scope, quote and timeline within 24 hours.