Mamoon Rajaprod · mamoon's digital persona
Vor-Ort-KI-IngenieurDubai (DIC)open to work
← All work

Department of Culture and Tourism — Abu Dhabi

Frontliner Academy

A training and certification platform for the people who meet visitors to Abu Dhabi — across hotels, attractions, airports and transport. Built end to end and handed over to DCT.

Client
DCT Abu Dhabi
Role
Full-stack, end to end
Status
Live, in production
vxacademy.dct.gov.ae →
The Frontliner Academy site

The brief

DCT Abu Dhabi wants a visitor's experience to feel the same everywhere — the hotel, the museum, the airport, the taxi. Their own words for it are “consistent, seamless, and extraordinary … across every touchpoint”.

Delivering that means training the person standing at each of those touchpoints, certifying them, and being able to see across the whole sector at once. The learners do not share an employer. That single fact is what separates this from a course platform.

Modelling a sector, not a company

An ordinary LMS has users and courses. This one carries a four-level hierarchy — organisation, sub-organisation, asset, sub-asset — because a hotel group has sub-brands, an airport has concessions, and a mall has hundreds of tenants who each employ their own frontline staff.

Crossed over that sit training areas, role categories and seniority levels. Together they decide what any given person is required to complete, so nobody is assigned a course by hand. Four roles use the result differently: an admin sees the sector, a sub-admin sees their organisation, a touchpoint admin sees their site, and a frontliner sees their own path.

Progress that answers two questions from one set of rows

Completion is recorded at five levels: learning block, unit, module, course, and training area. That looks redundant until you notice the platform has to answer both “has this person earned their certificate?” and “how is the sector performing?” — and answer them from the same data.

The first question lives at the bottom of the tree and has to be exact, because a certificate is a claim someone will make to an employer. The second lives at the top and has to be fast.

Built for the scale it actually runs at

Onboarding runs on invitations that know the difference between a new joiner and someone already in post, and every invitation is tracked through to delivery — employers supply the addresses, so knowing which ones landed is part of the job.

Sector-wide reporting is heavy by nature, so it is cached and refreshed in batches and stays fast however far the tree is opened. Assessments, SCORM packages, certificates and badges each carry their own lifecycle, tracked in its own right.

Thirty-nine tables and twenty-eight migrations, roughly 115,000 lines of TypeScript across the client and the server. Most of that is not the courseware — it is the record-keeping that makes a certificate mean something.

Built with

ReactViteTypeScriptNode.jsExpressPostgreSQLDrizzle ORMBullMQSCORMGeminiDocker