Skip to content

Learners

Learners use a tenant’s learner site, for example http://coffee.app.localhost. This section describes it page by page, as it is implemented.

Reference frontend Legacy React app
Folder front/web (@ulams/web) front/src (workspace front)
Built with Astro, server-rendered, almost no client JavaScript React 18 single-page app, Vite
Local URL http://<slug>.app.localhost (Caddy) or port 4321 port 3000
Status Default learner site; used by the demo academies Kept for features the reference frontend does not have yet

The reference frontend was introduced by ADR 0008. It renders every page on the server, themes each tenant from its API settings, and keeps the learner’s API token in an httpOnly cookie. It covers the landing page, the course page, the lesson player, quizzes, the finish page, events, the account page and sign-in. Cart and checkout, registration, password reset, certificates as files, notes and bookmarks, and booking are still only in the legacy React app.

Developers: the technical side (BFF, H5P proxy, caching, SDK) is in reference frontend.

Learner-facing UI targets WCAG 2.2 AA. The reference frontend has a skip link, landmarks, visible focus, reduced motion support and a layout that works at 360 px. Its Playwright suite runs an axe scan of every page type on desktop and phone sizes; the scan is not yet part of CI.