coursecode 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +322 -0
- package/THIRD_PARTY_NOTICES.md +22 -0
- package/bin/cli.js +331 -0
- package/framework/assets/logo-coursecode-black.svg +14 -0
- package/framework/assets/logo-coursecode-white.svg +14 -0
- package/framework/assets/logo-coursecode.svg +14 -0
- package/framework/css/01-base.css +160 -0
- package/framework/css/02-layout.css +499 -0
- package/framework/css/accessibility.css +834 -0
- package/framework/css/components/accordions.css +710 -0
- package/framework/css/components/assessments.css +520 -0
- package/framework/css/components/audio-player.css +570 -0
- package/framework/css/components/badges.css +80 -0
- package/framework/css/components/breadcrumbs.css +87 -0
- package/framework/css/components/buttons.css +707 -0
- package/framework/css/components/callouts.css +1280 -0
- package/framework/css/components/cards.css +475 -0
- package/framework/css/components/carousel.css +193 -0
- package/framework/css/components/checkbox-group.css +123 -0
- package/framework/css/components/checklist.css +203 -0
- package/framework/css/components/collapse.css +96 -0
- package/framework/css/components/comparison.css +33 -0
- package/framework/css/components/content-image.css +36 -0
- package/framework/css/components/document-gallery.css +425 -0
- package/framework/css/components/dropdown.css +115 -0
- package/framework/css/components/embed-frame.css +142 -0
- package/framework/css/components/engagement.css +412 -0
- package/framework/css/components/features.css +35 -0
- package/framework/css/components/flip-cards.css +253 -0
- package/framework/css/components/footer.css +353 -0
- package/framework/css/components/forms.css +294 -0
- package/framework/css/components/hero.css +216 -0
- package/framework/css/components/images.css +528 -0
- package/framework/css/components/interactive-timeline.css +274 -0
- package/framework/css/components/intro-cards.css +30 -0
- package/framework/css/components/lightbox.css +666 -0
- package/framework/css/components/loading.css +65 -0
- package/framework/css/components/modals.css +235 -0
- package/framework/css/components/notifications.css +107 -0
- package/framework/css/components/quote.css +150 -0
- package/framework/css/components/sidebar.css +684 -0
- package/framework/css/components/slide-header.css +52 -0
- package/framework/css/components/spinner.css +62 -0
- package/framework/css/components/stats.css +44 -0
- package/framework/css/components/steps.css +232 -0
- package/framework/css/components/tables.css +90 -0
- package/framework/css/components/tabs.css +347 -0
- package/framework/css/components/timeline.css +154 -0
- package/framework/css/components/toggle.css +95 -0
- package/framework/css/components/tooltip.css +226 -0
- package/framework/css/components/video-player.css +438 -0
- package/framework/css/design-tokens.css +707 -0
- package/framework/css/framework.css +86 -0
- package/framework/css/interactions/accessibility.css +75 -0
- package/framework/css/interactions/base.css +92 -0
- package/framework/css/interactions/drag-drop.css +295 -0
- package/framework/css/interactions/fill-in-the-blank.css +236 -0
- package/framework/css/interactions/hotspots.css +69 -0
- package/framework/css/interactions/index.css +45 -0
- package/framework/css/interactions/interactive-image.css +359 -0
- package/framework/css/interactions/likert.css +126 -0
- package/framework/css/interactions/matching.css +354 -0
- package/framework/css/interactions/numeric-input.css +78 -0
- package/framework/css/interactions/sequencing.css +378 -0
- package/framework/css/interactions/true-false.css +177 -0
- package/framework/css/layouts/article.css +258 -0
- package/framework/css/layouts/base.css +30 -0
- package/framework/css/layouts/canvas.css +38 -0
- package/framework/css/layouts/focused.css +236 -0
- package/framework/css/layouts/index.css +29 -0
- package/framework/css/layouts/presentation.css +191 -0
- package/framework/css/layouts/traditional.css +52 -0
- package/framework/css/responsive.css +439 -0
- package/framework/css/utilities/accessibility-utils.css +59 -0
- package/framework/css/utilities/animations.css +419 -0
- package/framework/css/utilities/borders.css +72 -0
- package/framework/css/utilities/colors.css +76 -0
- package/framework/css/utilities/container.css +46 -0
- package/framework/css/utilities/decorative.css +442 -0
- package/framework/css/utilities/display.css +257 -0
- package/framework/css/utilities/flexbox.css +80 -0
- package/framework/css/utilities/grid.css +69 -0
- package/framework/css/utilities/icons.css +534 -0
- package/framework/css/utilities/lists.css +190 -0
- package/framework/css/utilities/spacing.css +167 -0
- package/framework/css/utilities/tables.css +81 -0
- package/framework/css/utilities/typography.css +159 -0
- package/framework/css/utilities/visibility.css +117 -0
- package/framework/docs/COURSE_AUTHORING_GUIDE.md +1773 -0
- package/framework/docs/COURSE_OUTLINE_GUIDE.md +725 -0
- package/framework/docs/COURSE_OUTLINE_TEMPLATE.md +161 -0
- package/framework/docs/DATA_MODEL.md +409 -0
- package/framework/docs/FRAMEWORK_GUIDE.md +1088 -0
- package/framework/docs/USER_GUIDE.md +583 -0
- package/framework/docs/examples/cloudflare-channel-relay.js +169 -0
- package/framework/docs/examples/cloudflare-data-worker.js +102 -0
- package/framework/docs/examples/cloudflare-error-worker.js +228 -0
- package/framework/index.html +175 -0
- package/framework/js/app/AppActions.js +410 -0
- package/framework/js/app/AppState.js +225 -0
- package/framework/js/app/AppUI.js +616 -0
- package/framework/js/assessment/AssessmentActions.js +615 -0
- package/framework/js/assessment/AssessmentFactory.js +471 -0
- package/framework/js/assessment/AssessmentState.js +322 -0
- package/framework/js/assessment/AssessmentUI.js +451 -0
- package/framework/js/automation/api-engagement.js +196 -0
- package/framework/js/automation/api-interactions.js +167 -0
- package/framework/js/automation/api.js +242 -0
- package/framework/js/automation/index.js +41 -0
- package/framework/js/components/interactions/drag-drop.js +884 -0
- package/framework/js/components/interactions/fill-in.js +535 -0
- package/framework/js/components/interactions/hotspot.js +702 -0
- package/framework/js/components/interactions/interaction-base.js +511 -0
- package/framework/js/components/interactions/likert.js +301 -0
- package/framework/js/components/interactions/matching.js +699 -0
- package/framework/js/components/interactions/multiple-choice.js +377 -0
- package/framework/js/components/interactions/numeric.js +271 -0
- package/framework/js/components/interactions/sequencing.js +423 -0
- package/framework/js/components/interactions/true-false.js +241 -0
- package/framework/js/components/ui-components/accordion.js +442 -0
- package/framework/js/components/ui-components/alert.js +88 -0
- package/framework/js/components/ui-components/audio-player.js +1193 -0
- package/framework/js/components/ui-components/callout.js +121 -0
- package/framework/js/components/ui-components/carousel.js +145 -0
- package/framework/js/components/ui-components/checkbox-group.js +87 -0
- package/framework/js/components/ui-components/checklist.js +40 -0
- package/framework/js/components/ui-components/collapse.js +114 -0
- package/framework/js/components/ui-components/comparison.js +30 -0
- package/framework/js/components/ui-components/conditional-display.js +150 -0
- package/framework/js/components/ui-components/content-image.js +41 -0
- package/framework/js/components/ui-components/dropdown.js +262 -0
- package/framework/js/components/ui-components/embed-frame.js +274 -0
- package/framework/js/components/ui-components/features.js +33 -0
- package/framework/js/components/ui-components/flip-card.js +230 -0
- package/framework/js/components/ui-components/form-validator.js +76 -0
- package/framework/js/components/ui-components/hero.js +49 -0
- package/framework/js/components/ui-components/index.js +12 -0
- package/framework/js/components/ui-components/interactive-image.js +235 -0
- package/framework/js/components/ui-components/interactive-timeline.js +285 -0
- package/framework/js/components/ui-components/intro-cards.js +35 -0
- package/framework/js/components/ui-components/lightbox.js +652 -0
- package/framework/js/components/ui-components/modal.js +386 -0
- package/framework/js/components/ui-components/notifications.js +145 -0
- package/framework/js/components/ui-components/progress.js +88 -0
- package/framework/js/components/ui-components/quote.js +41 -0
- package/framework/js/components/ui-components/stats.js +33 -0
- package/framework/js/components/ui-components/steps.js +41 -0
- package/framework/js/components/ui-components/tabs.js +255 -0
- package/framework/js/components/ui-components/timeline.js +42 -0
- package/framework/js/components/ui-components/toggle-group.js +73 -0
- package/framework/js/components/ui-components/tooltip.js +458 -0
- package/framework/js/components/ui-components/value-display.js +133 -0
- package/framework/js/components/ui-components/video-player.js +686 -0
- package/framework/js/core/component-catalog.js +121 -0
- package/framework/js/core/event-bus.js +178 -0
- package/framework/js/core/interaction-catalog.js +149 -0
- package/framework/js/dev/runtime-linter.js +1725 -0
- package/framework/js/drivers/cmi5-driver.js +768 -0
- package/framework/js/drivers/driver-factory.js +77 -0
- package/framework/js/drivers/driver-interface.js +110 -0
- package/framework/js/drivers/http-driver-base.js +241 -0
- package/framework/js/drivers/lti-driver.js +508 -0
- package/framework/js/drivers/proxy-driver.js +444 -0
- package/framework/js/drivers/scorm-12-driver.js +560 -0
- package/framework/js/drivers/scorm-2004-driver.js +775 -0
- package/framework/js/drivers/scorm-driver-base.js +112 -0
- package/framework/js/engagement/engagement-manager.js +404 -0
- package/framework/js/engagement/engagement-progress.js +191 -0
- package/framework/js/engagement/engagement-trackers.js +215 -0
- package/framework/js/engagement/requirement-strategies.js +268 -0
- package/framework/js/main.js +727 -0
- package/framework/js/managers/accessibility-manager.js +499 -0
- package/framework/js/managers/assessment-manager.js +230 -0
- package/framework/js/managers/audio-manager.js +944 -0
- package/framework/js/managers/comment-manager.js +88 -0
- package/framework/js/managers/flag-manager.js +86 -0
- package/framework/js/managers/interaction-manager.js +254 -0
- package/framework/js/managers/interaction-registry.js +96 -0
- package/framework/js/managers/objective-manager.js +423 -0
- package/framework/js/managers/score-manager.js +441 -0
- package/framework/js/managers/video-manager.js +536 -0
- package/framework/js/navigation/Breadcrumbs.js +234 -0
- package/framework/js/navigation/NavigationActions.js +1132 -0
- package/framework/js/navigation/NavigationState.js +276 -0
- package/framework/js/navigation/NavigationUI.js +574 -0
- package/framework/js/navigation/document-gallery.js +357 -0
- package/framework/js/navigation/navigation-helpers.js +175 -0
- package/framework/js/navigation/navigation-validators.js +174 -0
- package/framework/js/state/index.js +8 -0
- package/framework/js/state/lms-connection.js +482 -0
- package/framework/js/state/lms-error-utils.js +58 -0
- package/framework/js/state/state-commits.js +200 -0
- package/framework/js/state/state-domains.js +86 -0
- package/framework/js/state/state-manager.js +502 -0
- package/framework/js/state/state-validation.js +311 -0
- package/framework/js/state/transaction-log.js +41 -0
- package/framework/js/state/xapi-statement-service.js +325 -0
- package/framework/js/utilities/access-control.js +99 -0
- package/framework/js/utilities/breakpoint-manager.js +315 -0
- package/framework/js/utilities/canvas-slide.js +35 -0
- package/framework/js/utilities/conditional-display.js +388 -0
- package/framework/js/utilities/course-channel.js +214 -0
- package/framework/js/utilities/course-helpers.js +420 -0
- package/framework/js/utilities/data-reporter.js +273 -0
- package/framework/js/utilities/error-reporter.js +313 -0
- package/framework/js/utilities/hotspot-helper.js +341 -0
- package/framework/js/utilities/icons.js +348 -0
- package/framework/js/utilities/logger.js +92 -0
- package/framework/js/utilities/markdown-renderer.js +45 -0
- package/framework/js/utilities/scroll-tracker.js +68 -0
- package/framework/js/utilities/ui-initializer.js +146 -0
- package/framework/js/utilities/utilities.js +293 -0
- package/framework/js/utilities/view-manager.js +227 -0
- package/framework/js/validation/html-validators.js +422 -0
- package/framework/js/validation/scorm-validators.js +438 -0
- package/framework/js/vendor/pipwerks.js +931 -0
- package/framework/scripts/generate-narration.js +629 -0
- package/framework/scripts/tts-providers/azure-provider.js +178 -0
- package/framework/scripts/tts-providers/base-provider.js +81 -0
- package/framework/scripts/tts-providers/deepgram-provider.js +135 -0
- package/framework/scripts/tts-providers/elevenlabs-provider.js +148 -0
- package/framework/scripts/tts-providers/google-provider.js +272 -0
- package/framework/scripts/tts-providers/index.js +158 -0
- package/framework/scripts/tts-providers/openai-provider.js +143 -0
- package/framework/version.json +63 -0
- package/lib/authoring-api.js +919 -0
- package/lib/build-linter.js +450 -0
- package/lib/build-packaging.js +186 -0
- package/lib/build.js +88 -0
- package/lib/cloud.js +691 -0
- package/lib/convert.js +341 -0
- package/lib/course-parser.js +936 -0
- package/lib/course-writer.js +258 -0
- package/lib/create.js +248 -0
- package/lib/css-index.js +237 -0
- package/lib/dev.js +51 -0
- package/lib/export-content.js +1246 -0
- package/lib/headless-browser.js +413 -0
- package/lib/import.js +377 -0
- package/lib/index.js +80 -0
- package/lib/info.js +79 -0
- package/lib/interaction-formatters.js +568 -0
- package/lib/manifest/cmi5-manifest.js +63 -0
- package/lib/manifest/lti-tool-config.js +53 -0
- package/lib/manifest/manifest-factory.js +99 -0
- package/lib/manifest/scorm-12-manifest.js +61 -0
- package/lib/manifest/scorm-2004-manifest.js +94 -0
- package/lib/manifest/scorm-proxy-manifest.js +104 -0
- package/lib/manifest-parser.js +96 -0
- package/lib/mcp-prompts.js +753 -0
- package/lib/mcp-server.js +316 -0
- package/lib/narration.js +53 -0
- package/lib/pdf-structure.js +142 -0
- package/lib/preview-export.js +231 -0
- package/lib/preview-routes-api.js +662 -0
- package/lib/preview-routes-editing.js +159 -0
- package/lib/preview-routes-lms.js +230 -0
- package/lib/preview-server.js +564 -0
- package/lib/project-utils.js +269 -0
- package/lib/proxy-templates/proxy.html +68 -0
- package/lib/proxy-templates/scorm-bridge.js +112 -0
- package/lib/scaffold.js +193 -0
- package/lib/schema-extractor.js +361 -0
- package/lib/slide-source-editor.js +586 -0
- package/lib/stub-player/app-viewer.js +195 -0
- package/lib/stub-player/app.js +370 -0
- package/lib/stub-player/catalog-panel.js +312 -0
- package/lib/stub-player/config-panel.js +1303 -0
- package/lib/stub-player/content-generator.js +586 -0
- package/lib/stub-player/content-viewer.js +173 -0
- package/lib/stub-player/debug-panel.js +420 -0
- package/lib/stub-player/edit-mode.js +922 -0
- package/lib/stub-player/edit-utils.js +400 -0
- package/lib/stub-player/header-bar.js +354 -0
- package/lib/stub-player/interaction-editor.js +210 -0
- package/lib/stub-player/interactions-panel.js +565 -0
- package/lib/stub-player/lms-api.js +1094 -0
- package/lib/stub-player/login-screen.js +74 -0
- package/lib/stub-player/outline-mode.js +689 -0
- package/lib/stub-player/styles/_assessments-panel.css +245 -0
- package/lib/stub-player/styles/_base.css +89 -0
- package/lib/stub-player/styles/_catalog-icons.css +96 -0
- package/lib/stub-player/styles/_catalog-panel.css +291 -0
- package/lib/stub-player/styles/_config-panel.css +636 -0
- package/lib/stub-player/styles/_content-viewer.css +834 -0
- package/lib/stub-player/styles/_debug-panel.css +576 -0
- package/lib/stub-player/styles/_edit-mode.css +128 -0
- package/lib/stub-player/styles/_header-bar.css +343 -0
- package/lib/stub-player/styles/_interaction-editor.css +140 -0
- package/lib/stub-player/styles/_interactions-panel.css +1038 -0
- package/lib/stub-player/styles/_login-screen.css +102 -0
- package/lib/stub-player/styles/_outline-mode.css +752 -0
- package/lib/stub-player/styles.css +15 -0
- package/lib/stub-player.js +160 -0
- package/lib/test-data-reporting.js +176 -0
- package/lib/test-error-reporting.js +146 -0
- package/lib/token.js +86 -0
- package/lib/upgrade.js +257 -0
- package/lib/validation-rules.js +517 -0
- package/lib/vite-plugin-content-discovery.js +296 -0
- package/package.json +108 -0
- package/schemas/XMLSchema.dtd +402 -0
- package/schemas/adlcp_v1p3.xsd +111 -0
- package/schemas/adlnav_v1p3.xsd +61 -0
- package/schemas/adlseq_v1p3.xsd +93 -0
- package/schemas/common/anyElement.xsd +27 -0
- package/schemas/common/dataTypes.xsd +138 -0
- package/schemas/common/elementNames.xsd +767 -0
- package/schemas/common/elementTypes.xsd +786 -0
- package/schemas/common/rootElement.xsd +31 -0
- package/schemas/common/vocabTypes.xsd +345 -0
- package/schemas/common/vocabValues.xsd +257 -0
- package/schemas/datatypes.dtd +203 -0
- package/schemas/ims_xml.xsd +35 -0
- package/schemas/imscp_v1p1.xsd +368 -0
- package/schemas/imsss_v1p0.xsd +67 -0
- package/schemas/imsss_v1p0auxresource.xsd +19 -0
- package/schemas/imsss_v1p0control.xsd +20 -0
- package/schemas/imsss_v1p0delivery.xsd +17 -0
- package/schemas/imsss_v1p0limit.xsd +47 -0
- package/schemas/imsss_v1p0objective.xsd +67 -0
- package/schemas/imsss_v1p0random.xsd +16 -0
- package/schemas/imsss_v1p0rollup.xsd +46 -0
- package/schemas/imsss_v1p0seqrule.xsd +108 -0
- package/schemas/imsss_v1p0util.xsd +94 -0
- package/schemas/license.txt +17 -0
- package/schemas/lom.xsd +102 -0
- package/schemas/lomCustom.xsd +62 -0
- package/schemas/lomLoose.xsd +62 -0
- package/schemas/lomStrict.xsd +62 -0
- package/schemas/xml.xsd +81 -0
- package/template/.env.example +92 -0
- package/template/course/assets/audio/example-intro.mp3 +0 -0
- package/template/course/assets/audio/example-ui-demo--compact-player.mp3 +0 -0
- package/template/course/assets/audio/example-ui-demo--demo-modal.mp3 +0 -0
- package/template/course/assets/audio/example-ui-demo--full-player.mp3 +0 -0
- package/template/course/assets/docs/example_md_1.md +39 -0
- package/template/course/assets/docs/example_md_2.md +41 -0
- package/template/course/assets/docs/example_pdf_1_thumbnail.png +0 -0
- package/template/course/assets/docs/example_pdf_2.pdf +0 -0
- package/template/course/assets/images/course-architecture.svg +36 -0
- package/template/course/assets/images/logo.svg +14 -0
- package/template/course/assets/widgets/counter-demo.html +190 -0
- package/template/course/assets/widgets/gravity-painter.html +384 -0
- package/template/course/course-config.js +539 -0
- package/template/course/icons.js +19 -0
- package/template/course/interactions/PLUGIN_GUIDE.md +97 -0
- package/template/course/slides/example-course-structure.js +138 -0
- package/template/course/slides/example-final-exam.js +144 -0
- package/template/course/slides/example-finishing.js +127 -0
- package/template/course/slides/example-interactions-showcase.js +615 -0
- package/template/course/slides/example-preview-tour.js +129 -0
- package/template/course/slides/example-remedial.js +143 -0
- package/template/course/slides/example-summary.js +103 -0
- package/template/course/slides/example-ui-showcase.js +1805 -0
- package/template/course/slides/example-welcome.js +123 -0
- package/template/course/slides/example-workflow.js +140 -0
- package/template/course/theme.css +165 -0
- package/template/eslint.config.js +47 -0
- package/template/package.json +28 -0
- package/template/vite.config.js +339 -0
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
# CourseCode User Guide
|
|
2
|
+
|
|
3
|
+
A complete guide to creating interactive e-learning courses with AI assistance. No coding experience required.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
1. [Getting Started](#getting-started)
|
|
10
|
+
- [What You'll Need](#what-youll-need)
|
|
11
|
+
- [Installation](#installation)
|
|
12
|
+
- [Creating Your First Project](#creating-your-first-project)
|
|
13
|
+
2. [Your Course Folder](#your-course-folder)
|
|
14
|
+
- [Where Everything Lives](#where-everything-lives)
|
|
15
|
+
- [The Documentation Files](#the-documentation-files)
|
|
16
|
+
3. [The AI Workflow](#the-ai-workflow)
|
|
17
|
+
- [Step 1: Convert Your Source Materials](#step-1-convert-your-source-materials)
|
|
18
|
+
- [Step 2: Create Your Course Outline](#step-2-create-your-course-outline)
|
|
19
|
+
- [Step 3: Build the Course](#step-3-build-the-course)
|
|
20
|
+
- [Step 4: Preview and Refine](#step-4-preview-and-refine)
|
|
21
|
+
4. [Connecting AI with MCP](#connecting-ai-with-mcp)
|
|
22
|
+
- [What Is MCP?](#what-is-mcp)
|
|
23
|
+
- [Setup](#setup)
|
|
24
|
+
- [Available Tools](#available-tools)
|
|
25
|
+
- [How the Workflow Changes](#how-the-workflow-changes)
|
|
26
|
+
5. [Using the Preview](#using-the-preview)
|
|
27
|
+
- [Starting the Preview](#starting-the-preview)
|
|
28
|
+
- [Visual Editing](#visual-editing)
|
|
29
|
+
- [Configuration Panels](#configuration-panels)
|
|
30
|
+
- [Testing Your Course](#testing-your-course)
|
|
31
|
+
6. [Course Building Blocks](#course-building-blocks)
|
|
32
|
+
- [Slides](#slides)
|
|
33
|
+
- [Interactions](#interactions)
|
|
34
|
+
- [Assessments](#assessments)
|
|
35
|
+
- [Audio and Video](#audio-and-video)
|
|
36
|
+
- [UI Components](#ui-components)
|
|
37
|
+
7. [Customizing Your Course](#customizing-your-course)
|
|
38
|
+
- [Layouts](#layouts)
|
|
39
|
+
- [Theming and Branding](#theming-and-branding)
|
|
40
|
+
- [Navigation and Flow](#navigation-and-flow)
|
|
41
|
+
- [Engagement Requirements](#engagement-requirements)
|
|
42
|
+
- [Learning Objectives](#learning-objectives)
|
|
43
|
+
8. [Sharing and Deploying](#sharing-and-deploying)
|
|
44
|
+
- [Sharing Previews](#sharing-previews)
|
|
45
|
+
- [Understanding LMS Formats](#understanding-lms-formats)
|
|
46
|
+
- [Standard Deployment](#standard-deployment)
|
|
47
|
+
- [CDN Deployment (Advanced)](#cdn-deployment-advanced)
|
|
48
|
+
- [Exporting Content for Review](#exporting-content-for-review)
|
|
49
|
+
9. [Generating Audio Narration](#generating-audio-narration)
|
|
50
|
+
10. [Troubleshooting](#troubleshooting)
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Getting Started
|
|
55
|
+
|
|
56
|
+
### What You'll Need
|
|
57
|
+
|
|
58
|
+
**Required:**
|
|
59
|
+
- [Node.js](https://nodejs.org/) (version 18 or later)
|
|
60
|
+
|
|
61
|
+
**Recommended:**
|
|
62
|
+
- A text editor like [VS Code](https://code.visualstudio.com/) or [Notepad++](https://notepad-plus-plus.org/)
|
|
63
|
+
- An AI assistant like [Claude](https://claude.ai/), [ChatGPT](https://chat.openai.com/), or [GitHub Copilot](https://github.com/features/copilot)
|
|
64
|
+
- [GitHub Desktop](https://desktop.github.com/) for version control (optional)
|
|
65
|
+
|
|
66
|
+
### Installation
|
|
67
|
+
|
|
68
|
+
After installing Node.js, open your terminal (Terminal on Mac, Command Prompt or PowerShell on Windows) and run:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npm install -g coursecode
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
This installs CourseCode globally so you can use it from any folder.
|
|
75
|
+
|
|
76
|
+
### Creating Your First Project
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
coursecode create my-course
|
|
80
|
+
cd my-course
|
|
81
|
+
coursecode preview
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Open `http://localhost:4173` in your browser. You'll see an example course that teaches you how to use CourseCode — explore it to see what's possible!
|
|
85
|
+
|
|
86
|
+
#### Starting Fresh
|
|
87
|
+
|
|
88
|
+
The example project includes demo slides (prefixed with `example-`) that show off features. When you're ready to build your own course, you have two options:
|
|
89
|
+
|
|
90
|
+
**Option 1: Start blank** — no example content at all:
|
|
91
|
+
```bash
|
|
92
|
+
coursecode create my-course --blank
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Option 2: Clean up later** — explore the examples first, then strip them:
|
|
96
|
+
```bash
|
|
97
|
+
coursecode clean
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
#### Creating New Files
|
|
101
|
+
|
|
102
|
+
Use these commands to scaffold new files quickly:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
coursecode new slide my-topic # Create a new slide
|
|
106
|
+
coursecode new assessment final-quiz # Create a graded quiz
|
|
107
|
+
coursecode new config # Create a fresh course-config.js
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Your Course Folder
|
|
113
|
+
|
|
114
|
+
### Where Everything Lives
|
|
115
|
+
|
|
116
|
+
When you create a project, you get this structure:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
my-course/
|
|
120
|
+
├── course/ ← Your content goes here
|
|
121
|
+
│ ├── course-config.js # Course settings
|
|
122
|
+
│ ├── slides/ # One file per slide
|
|
123
|
+
│ ├── assets/ # Images, audio, video
|
|
124
|
+
│ ├── theme.css # Brand colors and fonts
|
|
125
|
+
|
|
126
|
+
└── framework/ ← Don't edit this
|
|
127
|
+
└── docs/ # Guides for AI
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**You only work in the `course/` folder.** The `framework/` folder contains the system files — your AI assistant uses the docs there, but you don't need to touch them.
|
|
131
|
+
|
|
132
|
+
### The Documentation Files
|
|
133
|
+
|
|
134
|
+
These files in `framework/docs/` are designed to give your AI assistant context:
|
|
135
|
+
|
|
136
|
+
| Document | When to Use |
|
|
137
|
+
|----------|-------------|
|
|
138
|
+
| `COURSE_OUTLINE_TEMPLATE.md` | Starting a new outline |
|
|
139
|
+
| `COURSE_OUTLINE_GUIDE.md` | Writing effective outlines |
|
|
140
|
+
| `COURSE_AUTHORING_GUIDE.md` | Slide authoring, interactions, and CSS styling |
|
|
141
|
+
| `FRAMEWORK_GUIDE.md` | Advanced customization |
|
|
142
|
+
|
|
143
|
+
You don't need to read these yourself — just give them to your AI assistant when prompting.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## The AI Workflow
|
|
148
|
+
|
|
149
|
+
CourseCode is designed to work with AI assistants. Here's the recommended process:
|
|
150
|
+
|
|
151
|
+
### Step 1: Convert Your Source Materials
|
|
152
|
+
|
|
153
|
+
If you have existing content (PDFs, Word documents, PowerPoints), place them in `course/references/` and run:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
coursecode convert
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
This creates markdown files in `course/references/converted/` that AI can reference when building your course.
|
|
160
|
+
|
|
161
|
+
### Step 2: Create Your Course Outline
|
|
162
|
+
|
|
163
|
+
Give your AI assistant:
|
|
164
|
+
1. Your converted reference documents (from Step 1)
|
|
165
|
+
2. The file `framework/docs/COURSE_OUTLINE_TEMPLATE.md`
|
|
166
|
+
3. The file `framework/docs/COURSE_OUTLINE_GUIDE.md`
|
|
167
|
+
|
|
168
|
+
Ask it to create a course outline. Review the outline and make edits until you're happy with the structure — this is your blueprint.
|
|
169
|
+
|
|
170
|
+
### Step 3: Build the Course
|
|
171
|
+
|
|
172
|
+
When your outline is ready, give your AI assistant:
|
|
173
|
+
1. Your completed course outline
|
|
174
|
+
2. The file `framework/docs/COURSE_AUTHORING_GUIDE.md`
|
|
175
|
+
|
|
176
|
+
Ask it to build the course based on your outline. The AI will create slide files and configure your course.
|
|
177
|
+
|
|
178
|
+
### Step 4: Preview and Refine
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
coursecode preview
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Open `http://localhost:4173` to see your course. Found issues? Tell your AI assistant what's wrong and share the relevant guide files for context.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Connecting AI with MCP
|
|
189
|
+
|
|
190
|
+
The steps above work with any AI assistant — you copy files into a chat and get results back. But CourseCode also includes an **MCP server** that gives your AI direct access to your course, making the workflow dramatically faster.
|
|
191
|
+
|
|
192
|
+
### What Is MCP?
|
|
193
|
+
|
|
194
|
+
**Model Context Protocol (MCP)** is a standard that lets AI tools connect to external systems. With CourseCode's MCP server, your AI assistant can:
|
|
195
|
+
|
|
196
|
+
- **See your course** — take screenshots of any slide
|
|
197
|
+
- **Navigate and interact** — move between slides, answer questions, test interactions
|
|
198
|
+
- **Check for errors** — run the linter and get structured results
|
|
199
|
+
- **Discover components** — browse available UI components, interactions, and CSS classes
|
|
200
|
+
- **Build and export** — produce LMS-ready packages
|
|
201
|
+
|
|
202
|
+
Without MCP, you describe problems to your AI and paste code back and forth. With MCP, the AI can look at your course directly and fix issues in real time.
|
|
203
|
+
|
|
204
|
+
### Setup
|
|
205
|
+
|
|
206
|
+
MCP setup depends on which AI tool you use. In each case, you add a small configuration that tells the tool how to launch CourseCode's MCP server.
|
|
207
|
+
|
|
208
|
+
#### Claude Desktop
|
|
209
|
+
|
|
210
|
+
Open **Settings → Developer → Edit Config** and add:
|
|
211
|
+
|
|
212
|
+
```json
|
|
213
|
+
{
|
|
214
|
+
"mcpServers": {
|
|
215
|
+
"coursecode": {
|
|
216
|
+
"command": "coursecode",
|
|
217
|
+
"args": ["mcp"]
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Restart Claude Desktop. You should see a hammer (🔨) icon indicating the MCP tools are connected.
|
|
224
|
+
|
|
225
|
+
#### VS Code (GitHub Copilot)
|
|
226
|
+
|
|
227
|
+
Add to your workspace `.vscode/mcp.json`:
|
|
228
|
+
|
|
229
|
+
```json
|
|
230
|
+
{
|
|
231
|
+
"servers": {
|
|
232
|
+
"coursecode": {
|
|
233
|
+
"command": "coursecode",
|
|
234
|
+
"args": ["mcp"]
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
#### Cursor
|
|
241
|
+
|
|
242
|
+
Open **Settings → MCP** and add a new server:
|
|
243
|
+
|
|
244
|
+
- **Name**: `coursecode`
|
|
245
|
+
- **Command**: `coursecode mcp`
|
|
246
|
+
|
|
247
|
+
Or add to your `.cursor/mcp.json`:
|
|
248
|
+
|
|
249
|
+
```json
|
|
250
|
+
{
|
|
251
|
+
"mcpServers": {
|
|
252
|
+
"coursecode": {
|
|
253
|
+
"command": "coursecode",
|
|
254
|
+
"args": ["mcp"]
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
> **Note:** The MCP server runs from your course project directory. Make sure you have your project open in the editor when using MCP tools.
|
|
261
|
+
|
|
262
|
+
### Available Tools
|
|
263
|
+
|
|
264
|
+
Once connected, your AI assistant gains these capabilities:
|
|
265
|
+
|
|
266
|
+
| Tool | What It Does |
|
|
267
|
+
|------|--------------|
|
|
268
|
+
| `coursecode_state` | Get the full course state — current slide, structure, interactions, engagement, errors |
|
|
269
|
+
| `coursecode_navigate` | Jump to any slide by ID |
|
|
270
|
+
| `coursecode_screenshot` | Take a screenshot of any slide |
|
|
271
|
+
| `coursecode_interact` | Answer an interaction and check if it's correct |
|
|
272
|
+
| `coursecode_reset` | Clear progress and restart the course |
|
|
273
|
+
| `coursecode_lint` | Check for errors (bad CSS classes, missing components, config issues) |
|
|
274
|
+
| `coursecode_component_catalog` | Browse available UI components (tabs, accordion, cards, etc.) |
|
|
275
|
+
| `coursecode_interaction_catalog` | Browse available interaction types (multiple choice, drag-drop, etc.) |
|
|
276
|
+
| `coursecode_css_catalog` | Browse available CSS classes by category |
|
|
277
|
+
| `coursecode_workflow_status` | Get guidance on what to do next based on your project's current state |
|
|
278
|
+
| `coursecode_build` | Build the course for LMS deployment |
|
|
279
|
+
|
|
280
|
+
> **Note:** The preview server must be running before using runtime tools like `coursecode_state`, `coursecode_screenshot`, or `coursecode_navigate`. Start it with `coursecode preview` in a terminal.
|
|
281
|
+
|
|
282
|
+
### How the Workflow Changes
|
|
283
|
+
|
|
284
|
+
**Without MCP** (chat-based):
|
|
285
|
+
1. Copy documentation files into chat
|
|
286
|
+
2. Describe what you want
|
|
287
|
+
3. Copy generated code into your project
|
|
288
|
+
4. Preview in browser, describe issues back to AI
|
|
289
|
+
5. Repeat
|
|
290
|
+
|
|
291
|
+
**With MCP** (integrated):
|
|
292
|
+
1. Ask your AI assistant to build the course — it reads the guides automatically
|
|
293
|
+
2. The AI writes slides, runs the linter, takes screenshots, and iterates
|
|
294
|
+
3. You review the results and give feedback
|
|
295
|
+
4. The AI makes changes and verifies them visually
|
|
296
|
+
|
|
297
|
+
The AI handles the build-test-fix cycle on its own, and you focus on reviewing content and giving creative direction.
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Using the Preview
|
|
302
|
+
|
|
303
|
+
### Starting the Preview
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
coursecode preview
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
This opens your course in a simulated LMS environment. The preview automatically refreshes when you make changes.
|
|
310
|
+
|
|
311
|
+
### Visual Editing
|
|
312
|
+
|
|
313
|
+
Click the **Edit Mode** button in the toolbar to enable visual editing. Then:
|
|
314
|
+
|
|
315
|
+
- Click any text to edit it directly
|
|
316
|
+
- Changes are saved back to your source files
|
|
317
|
+
- Toggle edit mode off to test the course normally
|
|
318
|
+
|
|
319
|
+
### Configuration Panels
|
|
320
|
+
|
|
321
|
+
The preview toolbar gives you access to:
|
|
322
|
+
|
|
323
|
+
- **Config Panel** — View and edit course settings, slide properties, and interaction configurations
|
|
324
|
+
- **Content Panel** — See all your course content in one scrollable view
|
|
325
|
+
- **Debug Panel** — Watch what's happening behind the scenes (useful for troubleshooting)
|
|
326
|
+
|
|
327
|
+
### Testing Your Course
|
|
328
|
+
|
|
329
|
+
The preview simulates a real LMS:
|
|
330
|
+
|
|
331
|
+
- Progress is saved (refresh the page and you'll be where you left off)
|
|
332
|
+
- Use **Reset Course** to start fresh
|
|
333
|
+
- Toggle **Skip Gating** to bypass navigation locks during testing
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Course Building Blocks
|
|
338
|
+
|
|
339
|
+
### Slides
|
|
340
|
+
|
|
341
|
+
Each slide is a separate file in `course/slides/`. Your AI assistant creates these for you based on your outline.
|
|
342
|
+
|
|
343
|
+
Slides can contain:
|
|
344
|
+
- Text and headings
|
|
345
|
+
- Images and videos
|
|
346
|
+
- Interactive elements
|
|
347
|
+
- Audio narration
|
|
348
|
+
|
|
349
|
+
### Interactions
|
|
350
|
+
|
|
351
|
+
These are practice activities that engage learners:
|
|
352
|
+
|
|
353
|
+
| Type | Description |
|
|
354
|
+
|------|-------------|
|
|
355
|
+
| Multiple Choice | Select one or more correct answers |
|
|
356
|
+
| True/False | Simple yes/no questions |
|
|
357
|
+
| Fill-in-the-Blank | Enter missing text |
|
|
358
|
+
| Matching | Connect related items |
|
|
359
|
+
| Drag-and-Drop | Sort items into categories |
|
|
360
|
+
| Sequencing | Arrange items in order |
|
|
361
|
+
| Hotspot | Click correct areas on an image |
|
|
362
|
+
|
|
363
|
+
Interactions give immediate feedback and don't affect the learner's score unless they're part of an assessment.
|
|
364
|
+
|
|
365
|
+
### Assessments
|
|
366
|
+
|
|
367
|
+
Assessments are graded quizzes that determine whether learners pass:
|
|
368
|
+
|
|
369
|
+
- Questions can be randomized
|
|
370
|
+
- Learners can retry (if you allow it)
|
|
371
|
+
- Scores are reported to your LMS
|
|
372
|
+
- Can be linked to learning objectives
|
|
373
|
+
|
|
374
|
+
### Audio and Video
|
|
375
|
+
|
|
376
|
+
Add media to your slides:
|
|
377
|
+
|
|
378
|
+
- **Slide narration** — Professional voiceover for the entire slide
|
|
379
|
+
- **Embedded audio players** — Let learners control playback
|
|
380
|
+
- **Video** — Native video files, YouTube, or Vimeo
|
|
381
|
+
|
|
382
|
+
You can require learners to complete media before advancing.
|
|
383
|
+
|
|
384
|
+
### UI Components
|
|
385
|
+
|
|
386
|
+
Build engaging layouts with:
|
|
387
|
+
|
|
388
|
+
- **Accordions** — Collapsible sections
|
|
389
|
+
- **Tabs** — Organize content into switchable panels
|
|
390
|
+
- **Cards** — Visual containers for grouped content
|
|
391
|
+
- **Flip cards** — Reveal information on click
|
|
392
|
+
- **Modals** — Pop-up detail views
|
|
393
|
+
- **Callouts** — Highlighted tips, warnings, or notes
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
## Customizing Your Course
|
|
398
|
+
|
|
399
|
+
### Layouts
|
|
400
|
+
|
|
401
|
+
Layouts control the overall look and feel of your course. Choose one in your `course-config.js`:
|
|
402
|
+
|
|
403
|
+
| Layout | Best For | What It Looks Like |
|
|
404
|
+
|--------|----------|--------------------|
|
|
405
|
+
| **Article** (default) | Text-heavy content, self-paced reading | Minimal header, centered content, floating pill navigation at the bottom |
|
|
406
|
+
| **Traditional** | Structured courses with menus | Full header with course title, collapsible sidebar menu |
|
|
407
|
+
| **Focused** | Distraction-free learning, assessments | No visible header, centered content, floating pill navigation |
|
|
408
|
+
| **Presentation** | Imported PowerPoints, image-based slides | Full viewport, edge-to-edge content, arrow navigation on sides |
|
|
409
|
+
| **Canvas** | Fully custom experiences | Zero framework CSS — you bring your own HTML, CSS, and JS |
|
|
410
|
+
|
|
411
|
+
Tell your AI assistant which layout you want, or just describe the experience ("I want a clean reading experience" → article, "I need a sidebar menu" → traditional).
|
|
412
|
+
|
|
413
|
+
#### Canvas Layout
|
|
414
|
+
|
|
415
|
+
The **canvas** layout is for when you want complete creative control. It strips all framework CSS — every style is reverted to browser defaults so you start from scratch. Framework UI (header, footer, sidebar, navigation) is hidden, and you bring your own HTML and CSS via `theme.css` or `<style>` tags in your slides. Only CSS is affected — all JavaScript infrastructure remains fully available: `window.CourseCode` APIs, navigation, gating, interactions, engagement tracking, and LMS drivers all work exactly as they do in other layouts.
|
|
416
|
+
|
|
417
|
+
This is ideal for:
|
|
418
|
+
- **Custom interactive experiences** — simulations, games, branded microsites
|
|
419
|
+
- **AI-generated HTML pages** — have an AI tool create an HTML page, then wrap it to get full LMS support
|
|
420
|
+
- **Existing web content** — drop in HTML you already have
|
|
421
|
+
|
|
422
|
+
Your AI assistant can use the `canvasSlide()` helper to wrap any HTML into a working course slide with just a few lines of code. You still configure engagement, navigation, and tracking in `course-config.js` like any other layout.
|
|
423
|
+
|
|
424
|
+
Want navigation back? You can selectively opt in to sidebar or footer navigation through config — canvas just starts with everything hidden.
|
|
425
|
+
|
|
426
|
+
### Theming and Branding
|
|
427
|
+
|
|
428
|
+
Edit `course/theme.css` to match your organization's brand:
|
|
429
|
+
|
|
430
|
+
- Change primary and accent colors
|
|
431
|
+
- Set custom fonts
|
|
432
|
+
- Adjust spacing and sizing
|
|
433
|
+
- Add your logo
|
|
434
|
+
|
|
435
|
+
Your AI assistant can help — just describe the look you want and share `theme.css`.
|
|
436
|
+
|
|
437
|
+
### Navigation and Flow
|
|
438
|
+
|
|
439
|
+
Control how learners move through your course:
|
|
440
|
+
|
|
441
|
+
- **Linear** — Must complete slides in order
|
|
442
|
+
- **Free navigation** — Jump to any slide
|
|
443
|
+
- **Conditional** — Lock slides until requirements are met
|
|
444
|
+
|
|
445
|
+
### Engagement Requirements
|
|
446
|
+
|
|
447
|
+
Require learners to engage with content before advancing:
|
|
448
|
+
|
|
449
|
+
- View all tabs in a tabbed section
|
|
450
|
+
- Complete an interaction
|
|
451
|
+
- Watch a video or listen to audio
|
|
452
|
+
- Spend a minimum time on the slide
|
|
453
|
+
|
|
454
|
+
### Learning Objectives
|
|
455
|
+
|
|
456
|
+
Track what learners have accomplished:
|
|
457
|
+
|
|
458
|
+
- Automatically track when slides are visited
|
|
459
|
+
- Link objectives to assessment scores
|
|
460
|
+
- Report completion status to your LMS
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
## Sharing and Deploying
|
|
465
|
+
|
|
466
|
+
### Sharing Previews
|
|
467
|
+
|
|
468
|
+
Before deploying to an LMS, share your course with stakeholders for review:
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
coursecode preview --export
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
This creates a self-contained folder you can upload to any web host (Netlify, GitHub Pages, etc.). You can add password protection and other options — ask your AI assistant for help.
|
|
475
|
+
|
|
476
|
+
### Understanding LMS Formats
|
|
477
|
+
|
|
478
|
+
An LMS (Learning Management System) is the platform your organization uses to deliver training — think Cornerstone, Moodle, Canvas, Docebo, etc. CourseCode packages your course in a format your LMS understands.
|
|
479
|
+
|
|
480
|
+
| Format | What It Is | When to Use |
|
|
481
|
+
|--------|-----------|-------------|
|
|
482
|
+
| **cmi5** | The modern standard. Rich data, flexible. | Your LMS supports cmi5 (check with your LMS admin) |
|
|
483
|
+
| **SCORM 2004** | Widely supported enterprise standard. | Most corporate LMS platforms |
|
|
484
|
+
| **SCORM 1.2** | Oldest standard, most compatible. | Older systems, or when you're unsure |
|
|
485
|
+
| **LTI** | Integration standard, not a package format. | LMS platforms that use LTI (Canvas, Blackboard) |
|
|
486
|
+
|
|
487
|
+
**Not sure which to pick?** Ask your LMS administrator. If they don't know, try **SCORM 1.2** — it works with almost everything.
|
|
488
|
+
|
|
489
|
+
> **Using CourseCode Cloud?** You don't need to choose a format. Cloud-deployed courses use a universal build — the cloud generates the correct format automatically when you download a ZIP for your LMS. The format setting in `course-config.js` only applies to local `coursecode build` commands.
|
|
490
|
+
|
|
491
|
+
### Standard Deployment
|
|
492
|
+
|
|
493
|
+
The simplest approach — upload a ZIP file to your LMS:
|
|
494
|
+
|
|
495
|
+
```bash
|
|
496
|
+
coursecode build # Builds as cmi5 (default)
|
|
497
|
+
coursecode build --format scorm1.2 # Builds as SCORM 1.2
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
This creates a ZIP file in `dist/` that you upload directly to your LMS. Every time you update the course, you rebuild and re-upload.
|
|
501
|
+
|
|
502
|
+
### CDN Deployment (Advanced)
|
|
503
|
+
|
|
504
|
+
For teams that update courses frequently or serve multiple LMS clients, CourseCode supports **CDN deployment**. Instead of uploading the full course to each LMS, you:
|
|
505
|
+
|
|
506
|
+
1. Host the course on a CDN (like Netlify, Vercel, or GitHub Pages)
|
|
507
|
+
2. Upload a tiny proxy package (~15KB) to each LMS
|
|
508
|
+
3. The proxy loads the course from the CDN at runtime
|
|
509
|
+
|
|
510
|
+
**Why this matters:**
|
|
511
|
+
- **Instant updates** — fix a typo on the CDN and every learner sees it immediately, no LMS re-upload
|
|
512
|
+
- **Multi-tenant** — one CDN deployment serves multiple LMS clients, each with their own access token
|
|
513
|
+
- **Smaller LMS packages** — faster upload and launch times
|
|
514
|
+
|
|
515
|
+
CDN deployment uses special format variants (`scorm1.2-proxy`, `scorm2004-proxy`, `cmi5-remote`). Ask your AI assistant to set this up — it involves configuring an external URL and access tokens in `course-config.js`.
|
|
516
|
+
|
|
517
|
+
### Cloud Deployment
|
|
518
|
+
|
|
519
|
+
CourseCode Cloud is the simplest deployment option. Upload your course once and the cloud handles everything:
|
|
520
|
+
|
|
521
|
+
```bash
|
|
522
|
+
coursecode deploy # Build + upload to cloud
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
**How it works:** Your course is built once as a universal package. The cloud can generate a format-specific ZIP (SCORM 1.2, SCORM 2004, cmi5, etc.) on demand — no rebuilding required. You never need to set a format in `course-config.js` for cloud-deployed courses.
|
|
526
|
+
|
|
527
|
+
**Benefits:**
|
|
528
|
+
- **No format decisions** — download the right ZIP for any LMS directly from the cloud
|
|
529
|
+
- **Instant updates** — redeploy and all future launches get the new version
|
|
530
|
+
- **Preview sharing** — cloud provides a shareable preview link automatically
|
|
531
|
+
|
|
532
|
+
### Exporting Content for Review
|
|
533
|
+
|
|
534
|
+
Extract your course content into a readable document for subject matter expert (SME) review:
|
|
535
|
+
|
|
536
|
+
```bash
|
|
537
|
+
coursecode export-content -o review.md
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
This pulls all slide text, interactions, and assessment questions into a single Markdown file. Useful for getting sign-off on content accuracy before deploying.
|
|
541
|
+
|
|
542
|
+
---
|
|
543
|
+
|
|
544
|
+
## Generating Audio Narration
|
|
545
|
+
|
|
546
|
+
Create professional voiceover from text:
|
|
547
|
+
|
|
548
|
+
1. Add narration scripts to your slides (your AI assistant can help)
|
|
549
|
+
2. Get an API key from [Deepgram](https://deepgram.com/) (default), [ElevenLabs](https://elevenlabs.io/), [OpenAI](https://platform.openai.com/), [Google Cloud](https://cloud.google.com/text-to-speech), or [Azure](https://azure.microsoft.com/en-us/products/ai-services/text-to-speech)
|
|
550
|
+
3. Add the key to a `.env` file in your project
|
|
551
|
+
4. Run:
|
|
552
|
+
|
|
553
|
+
```bash
|
|
554
|
+
coursecode narration
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
Audio files are generated to `course/assets/audio/` and automatically linked to your slides.
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
561
|
+
## Troubleshooting
|
|
562
|
+
|
|
563
|
+
**The preview won't start**
|
|
564
|
+
- Make sure you're in your project folder (where `course/` exists)
|
|
565
|
+
- Try `npm install` if you haven't already
|
|
566
|
+
|
|
567
|
+
**Changes aren't appearing**
|
|
568
|
+
- The preview auto-refreshes, but try a manual browser refresh
|
|
569
|
+
- Check for error messages in your terminal
|
|
570
|
+
|
|
571
|
+
**The course looks wrong in my LMS**
|
|
572
|
+
- Try a different format (`--format scorm1.2` for older systems)
|
|
573
|
+
- Check that your LMS supports the format you chose
|
|
574
|
+
|
|
575
|
+
**AI is generating incorrect code**
|
|
576
|
+
- Make sure you're giving it the right documentation files
|
|
577
|
+
- Share error messages so it can fix issues
|
|
578
|
+
|
|
579
|
+
**Need more help?**
|
|
580
|
+
- Check the [GitHub issues](https://github.com/course-code-framework/coursecode/issues)
|
|
581
|
+
- The example course includes troubleshooting tips
|
|
582
|
+
|
|
583
|
+
---
|