feat: live class sessions, CE workflow, and docs (#683)

Adds live-class session scheduling on lessons (join link, date/time,
timezone) with automatic 24h and 1h reminder emails plus a calendar
invite (.ics), a time-change notification with an updated invite, a
teacher-authored welcome email and session invite on enrollment, and a
"Notify students" quiz nudge.

LMS gets an upcoming live-sessions card and Join buttons, plus a
reusable live-session card component (3 states) in @cio/ui with a
Storybook story. The sidebar content tree now reflects sequential
progression locking like the content list, and the course-completion
confetti regression is fixed.

Org-based emails no longer reference ClassroomIO by name. Docs add
live-class, welcome-email, and course-progression guides, expand the
certificates guide (design, signatures, corrected labels), move
plan-required callouts to the top, flatten how-to-guides to the docs
root with redirects, and add screenshots. Includes an add-docs-image
skill.
This commit is contained in:
Rotimi Best
2026-06-22 05:43:48 +01:00
committed by GitHub
parent 3547901de6
commit 81294a47f9
193 changed files with 5477 additions and 805 deletions
+6 -6
View File
@@ -34,24 +34,24 @@
<!-- Facebook Meta Tags -->
<!-- <meta property="og:url" content="https://www.classroomio.com/" />
<meta property="og:image" itemprop="image" content="https://brand.cdn.clsrio.com/og/classroomio-og.png" />
<meta property="og:image" itemprop="image" content="https://brand.cdn.clsrio.com/og/classroomio-opengraph.jpg" />
<meta property="og:title" content="ClassroomIO –&nbsp;The Open Source Learning Management System for Companies" />
<meta property="og:description"
content="A flexible, user-friendly platform for creating, managing, and delivering courses for companies and training organisations" />
content="A flexible, user-friendly platform for creating, managing, and delivering trainings for companies and training organisations" />
<meta property="og:type" content="website" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:type" content="image/jpeg" />
<meta property="og:image:width" content="1920" />
<meta property="og:image:height" content="1080" />
<meta property="og:image:secure_url" itemprop="image" content="https://brand.cdn.clsrio.com/og/classroomio-og.png" />
<meta property="og:image:secure_url" itemprop="image" content="https://brand.cdn.clsrio.com/og/classroomio-opengraph.jpg" />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain" content="classroomio.com" />
<meta property="twitter:url" content="https://www.classroomio.com/" />
<meta name="twitter:title" content="ClassroomIO –&nbsp;The Open Source Learning Management System for Companies" />
<meta name="twitter:description"
content="Launch your bootcamp quichttps://brand.cdn.clsrio.com/og/classroomio-og.pngnline teaching platform." />
<meta name="twitter:image" content="https://classroomio.com/classroomio-opengraph-image.png" /> -->
content="Launch your bootcamp quickly with the open source online teaching platform." />
<meta name="twitter:image" content="https://brand.cdn.clsrio.com/og/classroomio-opengraph.jpg" /> -->
<!-- <link rel="stylesheet" href="global.css"> -->
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials" />
+14 -6
View File
@@ -15,10 +15,10 @@ export async function load({ url }) {
const starsCache = new Map<string, { stars: number; lastUpdated: number }>();
const CACHE_TIME = 1000 * 60 * 60 * 48; // 48 hours
const CACHE_KEY = 'github-stars';
const DEFAULT_META_TITLE = 'ClassroomIO | The Most Customizable Platform for Customer, Partner, and Employee Education';
const DEFAULT_META_TITLE = 'ClassroomIO | One Platform for Customer, Partner, and Employee Training';
const DEFAULT_META_DESCRIPTION =
'One platform for customer academies, partner certification, and employee training. Build courses with AI, publish under your domain, and track completions.';
const DEFAULT_OG_IMAGE_URL = 'https://brand.cdn.clsrio.com/og/classroomio-opengraph.png';
const DEFAULT_OG_IMAGE_URL = 'https://brand.cdn.clsrio.com/og/classroomio-opengraph.jpg';
const DEFAULT_OG_IMAGE_ALT = 'ClassroomIO platform for customer, partner, and employee education';
async function getStars() {
@@ -63,12 +63,20 @@ function getBaseMetaTags(url: URL) {
siteName: 'ClassroomIO',
images: [
{
url: DEFAULT_OG_IMAGE_URL,
url: 'https://brand.cdn.clsrio.com/og/classroomio-opengraph.jpg',
alt: DEFAULT_OG_IMAGE_ALT,
width: 1920,
height: 1080,
secureUrl: DEFAULT_OG_IMAGE_URL,
type: 'image/png'
secureUrl: 'https://brand.cdn.clsrio.com/og/classroomio-opengraph.jpg',
type: 'image/jpeg'
},
{
url: 'https://brand.cdn.clsrio.com/og/classroomio-opengraph.webp',
alt: DEFAULT_OG_IMAGE_ALT,
width: 1920,
height: 1080,
secureUrl: 'https://brand.cdn.clsrio.com/og/classroomio-opengraph.webp',
type: 'image/webp'
}
]
},
@@ -78,7 +86,7 @@ function getBaseMetaTags(url: URL) {
cardType: 'summary_large_image' as const,
title: DEFAULT_META_TITLE,
description: DEFAULT_META_DESCRIPTION,
image: DEFAULT_OG_IMAGE_URL,
image: 'https://brand.cdn.clsrio.com/og/classroomio-opengraph.jpg',
imageAlt: DEFAULT_OG_IMAGE_ALT
}
}) satisfies MetaTagsProps;