M17

Academy — Courses, Certifications & Badges

In-product learning: video courses with transcripts, notes, knowledge checks, and earned certifications.

API workflow reference →
Course authoring

Create and manage courses from start to finish.

The admin flow begins on the Courses grid. Click New Course and fill in a title, description, and icon — the course code auto-fills as you type the title. Confirm, and the card lands in the grid. Open it, switch to the Lessons tab, and create the first lesson to seed the structure. Everything downstream — chapters, media, badges — hangs off this single starting point.

  • Course creation dialog: title, auto-generated code, description, icon picker
  • Draft → Published workflow — publish when the course is ready
  • Lesson creation from the course detail view lands as the first row of the lessons table
Chapter authoring

Chapters group videos inside a lesson — one dialog, done.

Each lesson holds one or more chapters. Admins open the lesson, click New Chapter, give it a name and a one-line description. The chapter lands as the next row in the lesson's chapters table — order, media count, and status all visible at a glance.

  • Chapter creation dialog with name + description
  • Chapters table shows order, media count, and status per chapter
  • Drag-reorder to change chapter ordering within a lesson
Media & auto-transcription

Drop a video in. A full transcript writes itself.

Admins drag a video file onto the chapter's media dropzone. When the upload completes, the transcript panel starts generating on its own — a WebVTT file with timestamped lines. Learners get the Transcript tab in the player wired to that file: click a line to jump the video, auto-scroll with playback, or pause and read.

  • Drag-and-drop media upload with progress state
  • WebVTT transcript auto-generated from the video's audio — no manual captioning step
  • Transcript powers the learner's Transcript tab: timestamped, click-to-jump, auto-scroll
Badge authoring

Design a badge — criteria, live crest preview, active toggle.

Admins open the Badges gallery, click New Badge, and shape it end-to-end: name, description, earning criteria (course completion, assessment scoring, or engagement criteria), and active / retired status. A live crest preview updates as they type; when they confirm, the finished badge lands in the gallery.

  • Live crest preview updates as the name is typed
  • Earning criteria: course completion, assessment scoring, or engagement (streaks, note count)
  • Active / retired status — retiring a badge never revokes what learners have already earned
Course consumption

Pick up right where you left off — playback, progress, and notes all persist.

The learner flow: browse the catalog, pick a course, and start watching. Playback position, lesson progress, and course progress persist across sessions — learners can pause any lesson and pick up in the middle of it days later without losing context.

  • Course catalog with search, difficulty labels, completion states, and a "Recommended next" rail
  • Course overview surfaces syllabus, total duration, progress ring, next badge, and certificate status
  • Lesson player: video + scrubber + speed + captions + Mark Complete / Next Video actions
Outline navigation

The whole course structure, always one click away.

The lesson / chapter / video tree is always visible in the side panel. Click any video to load it in the player — including material the learner has already completed. Later lessons can be gated to unlock as the learner progresses, or left open for reference-style courses.

  • Full lesson → chapter → video tree, always visible in the Outline tab
  • Click-to-load any video, including replay of completed material
  • Optional gating: unlock later lessons as prerequisites are completed
Lesson notes

Notes pinned to the moment they were taken.

Each note the learner writes is anchored to the video timestamp they were watching. The video pauses automatically while they type and resumes on save. Notes are listable per lesson (with timestamp, chapter, and date) and count toward engagement badge criteria.

  • Every note carries a timestamp back to the exact playback position
  • Video auto-pauses on typing, auto-resumes on save
  • Per-lesson notes list filterable by timestamp, chapter, and date

A full learning management module for the platform. Admins author video-based courses in a four-level hierarchy (course → lesson → chapter → media); learners work through them at their own pace with notes pinned to video timestamps, auto-generated transcripts, knowledge-check assessments, and earned badges + certifications. Two faces on the same content model: a focused learner experience for consumption, a full authoring surface for admins.

Capabilities

  • Four-level content hierarchy — course → lesson → chapter → media
  • Full content authoring — courses, lessons, chapters, and per-chapter videos (draft → published, drag-reorder, safe deletes with undo)
  • Automatic transcription — uploaded media gets a full VTT file, driving the Transcript tab in the player with timestamp-sync and click-to-jump
  • Learner-facing course catalog with search, difficulty levels, completion states, and "Recommended next" rail
  • Focused lesson player — video + progress scrubber + speed + CC, plus a three-tab side panel (Outline, Transcript, Notes)
  • Outline navigation — the full lesson/chapter/video tree is always visible; click any video to load it, replay completed material anytime, later lessons can be gated to unlock as learners progress
  • Learner notes pinned to video timestamps — auto-pause on typing, resume on save, listable/filterable per lesson
  • Knowledge check assessments — multiple-choice (multi-answer) or single-choice, per-lesson or end-of-course, configurable passing score
  • Badges earned via completion + assessment scoring + engagement criteria (first lesson, 3-day streak, 10 notes, etc.); locked placeholders show what's ahead
  • Certifications for completed courses; multi-course certification tracks with visible path and progress; dated, downloadable, and shareable
  • Progress + reporting — per-course %, lessons-complete count, per-video % watched; admin visibility into badge earn counts and course completion

Benefits

  • Product-adjacent training and onboarding without shipping learners out to a third-party LMS
  • Certification programs that turn power users into badge-holders and evangelists
  • Auto-transcription surfaces content to accessibility tooling and search on day one
  • Notes pinned to timestamps make lesson material stick without breaking flow

Flow of work

  1. 01Admin authors a course
  2. 02Uploads media; system auto-transcribes to VTT
  3. 03Learner enrolls and starts consuming
  4. 04Player tracks progress, saves timestamped notes, resumes on return
  5. 05Learner completes knowledge check
  6. 06Badges + certification issued and rendered on their profile

Subfeatures

  • Course CRUD (draft/publish)
  • Lesson CRUD (drag-reorder)
  • Chapter CRUD
  • Media upload with auto-VTT
  • Course cover treatment + difficulty
  • Lesson knowledge check
  • Course-end knowledge check
  • Multi-choice / single-choice questions
  • Configurable passing score
  • Course catalog with search
  • Completion state filter
  • Recommended-next rail
  • Lesson player (video + scrubber + speed + CC)
  • Outline / Transcript / Notes tabs
  • Timestamp-synced transcript with click-to-jump
  • Notes pinned to video timestamp
  • Auto-pause on note typing
  • Badges (earn / lock / retire)
  • Certifications (single-course + multi-course tracks)
  • Downloadable + shareable certificates
  • Per-course progress + per-video % watched
  • Admin reporting on badges + course completion
Source surfaces (technical reference)

Internal code areas in the licensed Full-Stack codebase that back this module.

  • ApiAcademyCourse
  • ApiAcademyLesson / Chapter / Media
  • ApiAcademyAssessment
  • ApiAcademyNote
  • ApiAcademyBadge
  • ApiAcademyCertification
  • Background transcription worker (media → VTT)
Feature matrix

Learner facing vs. Admin facing, side by side.

One module, two faces — everything the learner sees on the left, everything the admin controls on the right, all backed by the same content model.

CapabilityLearner facingAdmin facing
Course catalog / searchYes — browse, filter, enrollYes — publish state + featured order
Course consumption (video player, scrubber, speed, CC)Yes
Outline / Transcript / Notes tabsYes
Content authoring (course / lesson / chapter / media CRUD)Yes — with draft → published workflow
Drag-reorder lessons within a courseYes
Automatic transcription to VTTConsumed in Transcript tabTriggered on media upload
Timestamped notesYes — auto-pause on typingVisible per-learner in reporting
Knowledge check assessmentsTake + review resultsAuthor + set passing score
Badges (earn / display)Yes — earned + locked placeholdersYes — create / edit / retire + view earn counts
CertificationsEarn + download + shareConfigure per-course + certification tracks
Progress + completion reportingOwn progress + streaksCohort-level completion + badge counts
Credentials that stick

Badges for engagement, certifications for completion, tracks for the whole path.

Two credential shapes on the same foundation. Badges recognize specific behaviors — finish your first lesson, keep a 5-day streak, save 10 notes, earn the certification. Certifications recognize completing a full course and passing its knowledge check. Multi-course tracks bundle certifications into a visible path — "1 of 4 core courses complete", and so on.

  • Badges earned via combined completion + assessment scoring + engagement criteria; locked placeholders show what's ahead
  • Certifications issued on course completion + passing the knowledge check; dated, downloadable, and shareable
  • Certification tracks span multiple courses with visible progress toward the full path
  • Admins create / edit / retire credentials without revoking what learners have already earned
In the stack

Where it lives. What it exposes.

A quick visual of how Academy — Courses, Certifications & Badges participates across the CleenUI stack, alongside the named operations it adds to the API surface.

M17 · architecture
Frontend
React · TailwindCSS · 60+ components
Course catalogCourse overviewLesson playerOutline / Transcript / Notes tabsKnowledge-check runnerBadge shelfCertificate viewerAdmin course/lesson editorMedia upload
API
C# Web API · production-ready · role-aware
Course CRUDLesson / chapter / media CRUDAssessment engineNote CRUDProgress endpointsBadge + certification issuance
Database
AzureSQL · 300+ tables · 700+ procedures
CoursesLessonsChaptersMediaTranscriptsAssessmentsAssessmentAttemptsNotesProgressBadgesBadgeEarningsCertificationsCertificationTracks
Async Services and Batch Jobs
WebJobs & Functions · queue-backed
Transcription worker (media → VTT)Badge criteria evaluatorCertificate PDF generatorProgress rollup job
All four layers ship together as the Full-Stack license. M17 blocks are highlighted.
API operations

Named operations on this surface

22
Try these in Postman
  • POSTCourse CRUD (draft/publish)/academy/course-crud-draft-publish
  • POSTLesson CRUD (drag-reorder)/academy/lesson-crud-drag-reorder
  • POSTChapter CRUD/academy/chapter-crud
  • POSTMedia upload with auto-VTT/academy/media-upload-with-auto-vtt
  • POSTCourse cover treatment + difficulty/academy/course-cover-treatment-difficulty
  • POSTLesson knowledge check/academy/lesson-knowledge-check
  • POSTCourse-end knowledge check/academy/course-end-knowledge-check
  • POSTMulti-choice / single-choice questions/academy/multi-choice-single-choice-questions
  • POSTConfigurable passing score/academy/configurable-passing-score
  • POSTCourse catalog with search/academy/course-catalog-with-search
  • POSTCompletion state filter/academy/completion-state-filter
  • POSTRecommended-next rail/academy/recommended-next-rail
  • POSTLesson player (video + scrubber + speed + CC)/academy/lesson-player-video-scrubber-speed-cc
  • POSTOutline / Transcript / Notes tabs/academy/outline-transcript-notes-tabs
  • POSTTimestamp-synced transcript with click-to-jump/academy/timestamp-synced-transcript-with-click-to-jump
  • POSTNotes pinned to video timestamp/academy/notes-pinned-to-video-timestamp
  • POSTAuto-pause on note typing/academy/auto-pause-on-note-typing
  • POSTBadges (earn / lock / retire)/academy/badges-earn-lock-retire
  • POSTCertifications (single-course + multi-course tracks)/academy/certifications-single-course-multi-course-tracks
  • POSTDownloadable + shareable certificates/academy/downloadable-shareable-certificates
  • POSTPer-course progress + per-video % watched/academy/per-course-progress-per-video-watched
  • POSTAdmin reporting on badges + course completion/academy/admin-reporting-on-badges-course-completion

Each operation maps to an endpoint in the licensed C# Web API surface.