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:
@@ -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 – 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 – 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" />
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user