DigitalWonderlab.LearningHub 0.12.0-beta.3

This is a prerelease version of DigitalWonderlab.LearningHub.
The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package DigitalWonderlab.LearningHub --version 0.12.0-beta.3
                    
NuGet\Install-Package DigitalWonderlab.LearningHub -Version 0.12.0-beta.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DigitalWonderlab.LearningHub" Version="0.12.0-beta.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DigitalWonderlab.LearningHub" Version="0.12.0-beta.3" />
                    
Directory.Packages.props
<PackageReference Include="DigitalWonderlab.LearningHub" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DigitalWonderlab.LearningHub --version 0.12.0-beta.3
                    
#r "nuget: DigitalWonderlab.LearningHub, 0.12.0-beta.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DigitalWonderlab.LearningHub@0.12.0-beta.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DigitalWonderlab.LearningHub&version=0.12.0-beta.3&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=DigitalWonderlab.LearningHub&version=0.12.0-beta.3&prerelease
                    
Install as a Cake Tool

Digital Wonderlab LearningHub

An Umbraco-native e-learning / LMS package. Author courses in the backoffice, deliver them to Members on the front-end, track progress and assessments, issue certificates, and (optionally) sell course access with Stripe — all inside a standard Umbraco site, with no separate app to run.

Courses, modules, lessons and assessments are first-class Umbraco content. Enrolment, progress, assessment attempts and certificates are stored in the package's own transactional tables. The whole front-end re-skins from two brand colours, so a non-designer can make it look like their site in seconds.

📋 For a plain-English, brochure-style rundown of everything LearningHub does, see docs/FEATURES.md.


Features

  • Courses as content — a Learning Catalogue → Course → Module → Lesson / Assessment hierarchy, authored in the standard Content tree with full versioning and publishing.
  • Rich lessons — seven content block types: rich text, video (YouTube, Vimeo, or a self-hosted file uploaded to the site), image gallery, download, embed, callout and inline knowledge-check.
  • Nine assessment question types — single choice, multiple choice, true/false, ordering, matching, categorise, short text, numeric and image hotspot. Ordering, matching and categorise are drag-and-drop as progressive enhancement over native controls, so they still work with JavaScript disabled. Scoring is server-side.
  • Progress tracking — per-lesson completion, percentage complete, and "resume where you left off".
  • Certificates — print-perfect A4-landscape completion certificates, brand-driven, issued automatically on course completion.
  • Two-colour branding — the entire design system (surfaces, borders, shadows, gradients, dark mode) derives from a primary + accent colour via CSS color-mix(). Optional logo, dark mode, and "inherit host layout" so learning pages can render inside your own site chrome.
  • Enrolment & access — being a Member is not the same as having access; a single CanAccess check gates delivery. Self-enrolment (per-course toggle) and self-registration are built in.
  • B2B onboarding — a Learner member type (organisation + job role), CSV bulk import with invitation emails, and a per-course Learners view in the backoffice.
  • Payments (optional) — pluggable payment providers, Stripe first. Hosted Stripe Checkout; access is granted only by the verified webhook, never the browser redirect. Refunds withdraw access automatically. Secrets live in configuration/user-secrets, never in content.
  • Guided installer — a dedicated eLearning backoffice section with a one-click Setup dashboard, an Overview dashboard, and a Bulk Import dashboard.

Requirements

  • Umbraco CMS 17.x
  • .NET 10

Installation

dotnet add package DigitalWonderlab.LearningHub

The package auto-wires itself through an Umbraco composer — no Program.cs changes required.

  1. Add the package and start the site. On boot, the package creates its transactional tables (lhEnrolment, lhLessonProgress, lhAssessmentAttempt, lhAttemptAnswer, lhCertificate). The migration is idempotent and safe to run repeatedly.
  2. Open the backoffice and go to the eLearning section → Setup → Install. This creates the document types, data types, templates, the Learner member type and a starter catalogue. The installer is idempotent — re-running it repairs/upgrades and never deletes.
  3. Browse the front-end at / to see your catalogue.

The eLearning section is granted to the Administrators group on install. Custom sections are hidden until granted and the backoffice needs a hard refresh to reveal a new section.

Authoring a course

Under Content → Learning (the catalogue), create a Course, add Modules, and inside each module add Lessons (built from content blocks) and Assessments (built from Question blocks, each with Answer Options). Set the course pass mark, certificate toggle and — if you want learners to enrol themselves — the Allow self-enrolment toggle. Publish to make it live.

Branding

Open Content → Learning → Learning Settings and set the primary and accent colours (plus an optional logo and dark-mode toggle), then Publish. The entire front-end re-skins from those two values. Toggle Inherit host layout to render learning pages inside your site's own Views/_Layout.cshtml instead of the standalone LearningHub chrome.

Learners & onboarding

Learners are Umbraco Members of the Learner type. There are two onboarding paths:

  • Self-service — enable self-registration / self-enrolment; learners sign up and enrol themselves.
  • B2B bulk (admin onboards staff) — the eLearning → Bulk import dashboard imports a CSV (email, name, organisation, jobRole, course), creating members and enrolling them, and — if SMTP is configured — sending invitation emails with a temporary password. Import is non-destructive: existing members are matched by email, never recreated. A sample CSV is in docs/sample-import-learners.csv.

Each course has a Learners workspace view in the backoffice showing everyone enrolled, their enrolment date, best score and progress.

Payments (optional)

LearningHub ships a pluggable payment seam with a Stripe provider (hosted Checkout). It is off by default and requires no configuration if you only run free courses.

Configure under the LearningHub:Payments section. Never put secret keys in appsettings.json or in content — use user-secrets, environment variables or a key vault:

// appsettings.json — non-secret values only
{
  "LearningHub": {
    "Payments": {
      "Enabled": true,
      "Provider": "stripe",
      "NotificationEmail": "owner@example.com" // owner "new purchase" alerts; blank = SMTP From
    }
  }
}
# secrets — user-secrets / environment, NEVER committed
dotnet user-secrets set "LearningHub:Payments:Stripe:SecretKey"     "sk_live_…"
dotnet user-secrets set "LearningHub:Payments:Stripe:WebhookSecret" "whsec_…"

Register a Stripe webhook endpoint pointing at:

POST /learning-hub/payments/stripe/webhook

Payments are only offered when a secret key is configured and payments are enabled (via the config flag or the backoffice Learning Settings toggle). Hosted Checkout needs only the Secret key and Webhook secret. Access is granted solely by the signature-verified webhook; a charge.refunded event withdraws access automatically.

Good to know

  • Removing a learner's access: withdraw their enrolment rather than deleting the Member. Deleting a Member leaves orphaned enrolment rows (handled gracefully, but untidy).
  • Password reset uses Umbraco's built-in Members flow; LearningHub does not replace it.
  • Email (invitations, purchase/refund notifications) requires Umbraco SMTP to be configured. Without it, sends are skipped and logged — imports and payments still complete.

License

MIT © Digital Wonderlab


Part of the DigitalWonderlab.* family of Umbraco packages. Built by Digital Wonderlab.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated

0.11.0-beta.3 — private pre-release for first-client pilot (not for public Marketplace; all umbraco* tags stripped). Installer no longer aborts when a host site already owns a doc-type alias (e.g. contentPage). Course content model, nine assessment question types, progress tracking, certificates, two-colour brandable UI + brand font, CSV learner onboarding, lifecycle emails, SCORM 1.2 import/consume, and optional Stripe payments. See CHANGELOG.md.