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.
Files changed (362) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +322 -0
  3. package/THIRD_PARTY_NOTICES.md +22 -0
  4. package/bin/cli.js +331 -0
  5. package/framework/assets/logo-coursecode-black.svg +14 -0
  6. package/framework/assets/logo-coursecode-white.svg +14 -0
  7. package/framework/assets/logo-coursecode.svg +14 -0
  8. package/framework/css/01-base.css +160 -0
  9. package/framework/css/02-layout.css +499 -0
  10. package/framework/css/accessibility.css +834 -0
  11. package/framework/css/components/accordions.css +710 -0
  12. package/framework/css/components/assessments.css +520 -0
  13. package/framework/css/components/audio-player.css +570 -0
  14. package/framework/css/components/badges.css +80 -0
  15. package/framework/css/components/breadcrumbs.css +87 -0
  16. package/framework/css/components/buttons.css +707 -0
  17. package/framework/css/components/callouts.css +1280 -0
  18. package/framework/css/components/cards.css +475 -0
  19. package/framework/css/components/carousel.css +193 -0
  20. package/framework/css/components/checkbox-group.css +123 -0
  21. package/framework/css/components/checklist.css +203 -0
  22. package/framework/css/components/collapse.css +96 -0
  23. package/framework/css/components/comparison.css +33 -0
  24. package/framework/css/components/content-image.css +36 -0
  25. package/framework/css/components/document-gallery.css +425 -0
  26. package/framework/css/components/dropdown.css +115 -0
  27. package/framework/css/components/embed-frame.css +142 -0
  28. package/framework/css/components/engagement.css +412 -0
  29. package/framework/css/components/features.css +35 -0
  30. package/framework/css/components/flip-cards.css +253 -0
  31. package/framework/css/components/footer.css +353 -0
  32. package/framework/css/components/forms.css +294 -0
  33. package/framework/css/components/hero.css +216 -0
  34. package/framework/css/components/images.css +528 -0
  35. package/framework/css/components/interactive-timeline.css +274 -0
  36. package/framework/css/components/intro-cards.css +30 -0
  37. package/framework/css/components/lightbox.css +666 -0
  38. package/framework/css/components/loading.css +65 -0
  39. package/framework/css/components/modals.css +235 -0
  40. package/framework/css/components/notifications.css +107 -0
  41. package/framework/css/components/quote.css +150 -0
  42. package/framework/css/components/sidebar.css +684 -0
  43. package/framework/css/components/slide-header.css +52 -0
  44. package/framework/css/components/spinner.css +62 -0
  45. package/framework/css/components/stats.css +44 -0
  46. package/framework/css/components/steps.css +232 -0
  47. package/framework/css/components/tables.css +90 -0
  48. package/framework/css/components/tabs.css +347 -0
  49. package/framework/css/components/timeline.css +154 -0
  50. package/framework/css/components/toggle.css +95 -0
  51. package/framework/css/components/tooltip.css +226 -0
  52. package/framework/css/components/video-player.css +438 -0
  53. package/framework/css/design-tokens.css +707 -0
  54. package/framework/css/framework.css +86 -0
  55. package/framework/css/interactions/accessibility.css +75 -0
  56. package/framework/css/interactions/base.css +92 -0
  57. package/framework/css/interactions/drag-drop.css +295 -0
  58. package/framework/css/interactions/fill-in-the-blank.css +236 -0
  59. package/framework/css/interactions/hotspots.css +69 -0
  60. package/framework/css/interactions/index.css +45 -0
  61. package/framework/css/interactions/interactive-image.css +359 -0
  62. package/framework/css/interactions/likert.css +126 -0
  63. package/framework/css/interactions/matching.css +354 -0
  64. package/framework/css/interactions/numeric-input.css +78 -0
  65. package/framework/css/interactions/sequencing.css +378 -0
  66. package/framework/css/interactions/true-false.css +177 -0
  67. package/framework/css/layouts/article.css +258 -0
  68. package/framework/css/layouts/base.css +30 -0
  69. package/framework/css/layouts/canvas.css +38 -0
  70. package/framework/css/layouts/focused.css +236 -0
  71. package/framework/css/layouts/index.css +29 -0
  72. package/framework/css/layouts/presentation.css +191 -0
  73. package/framework/css/layouts/traditional.css +52 -0
  74. package/framework/css/responsive.css +439 -0
  75. package/framework/css/utilities/accessibility-utils.css +59 -0
  76. package/framework/css/utilities/animations.css +419 -0
  77. package/framework/css/utilities/borders.css +72 -0
  78. package/framework/css/utilities/colors.css +76 -0
  79. package/framework/css/utilities/container.css +46 -0
  80. package/framework/css/utilities/decorative.css +442 -0
  81. package/framework/css/utilities/display.css +257 -0
  82. package/framework/css/utilities/flexbox.css +80 -0
  83. package/framework/css/utilities/grid.css +69 -0
  84. package/framework/css/utilities/icons.css +534 -0
  85. package/framework/css/utilities/lists.css +190 -0
  86. package/framework/css/utilities/spacing.css +167 -0
  87. package/framework/css/utilities/tables.css +81 -0
  88. package/framework/css/utilities/typography.css +159 -0
  89. package/framework/css/utilities/visibility.css +117 -0
  90. package/framework/docs/COURSE_AUTHORING_GUIDE.md +1773 -0
  91. package/framework/docs/COURSE_OUTLINE_GUIDE.md +725 -0
  92. package/framework/docs/COURSE_OUTLINE_TEMPLATE.md +161 -0
  93. package/framework/docs/DATA_MODEL.md +409 -0
  94. package/framework/docs/FRAMEWORK_GUIDE.md +1088 -0
  95. package/framework/docs/USER_GUIDE.md +583 -0
  96. package/framework/docs/examples/cloudflare-channel-relay.js +169 -0
  97. package/framework/docs/examples/cloudflare-data-worker.js +102 -0
  98. package/framework/docs/examples/cloudflare-error-worker.js +228 -0
  99. package/framework/index.html +175 -0
  100. package/framework/js/app/AppActions.js +410 -0
  101. package/framework/js/app/AppState.js +225 -0
  102. package/framework/js/app/AppUI.js +616 -0
  103. package/framework/js/assessment/AssessmentActions.js +615 -0
  104. package/framework/js/assessment/AssessmentFactory.js +471 -0
  105. package/framework/js/assessment/AssessmentState.js +322 -0
  106. package/framework/js/assessment/AssessmentUI.js +451 -0
  107. package/framework/js/automation/api-engagement.js +196 -0
  108. package/framework/js/automation/api-interactions.js +167 -0
  109. package/framework/js/automation/api.js +242 -0
  110. package/framework/js/automation/index.js +41 -0
  111. package/framework/js/components/interactions/drag-drop.js +884 -0
  112. package/framework/js/components/interactions/fill-in.js +535 -0
  113. package/framework/js/components/interactions/hotspot.js +702 -0
  114. package/framework/js/components/interactions/interaction-base.js +511 -0
  115. package/framework/js/components/interactions/likert.js +301 -0
  116. package/framework/js/components/interactions/matching.js +699 -0
  117. package/framework/js/components/interactions/multiple-choice.js +377 -0
  118. package/framework/js/components/interactions/numeric.js +271 -0
  119. package/framework/js/components/interactions/sequencing.js +423 -0
  120. package/framework/js/components/interactions/true-false.js +241 -0
  121. package/framework/js/components/ui-components/accordion.js +442 -0
  122. package/framework/js/components/ui-components/alert.js +88 -0
  123. package/framework/js/components/ui-components/audio-player.js +1193 -0
  124. package/framework/js/components/ui-components/callout.js +121 -0
  125. package/framework/js/components/ui-components/carousel.js +145 -0
  126. package/framework/js/components/ui-components/checkbox-group.js +87 -0
  127. package/framework/js/components/ui-components/checklist.js +40 -0
  128. package/framework/js/components/ui-components/collapse.js +114 -0
  129. package/framework/js/components/ui-components/comparison.js +30 -0
  130. package/framework/js/components/ui-components/conditional-display.js +150 -0
  131. package/framework/js/components/ui-components/content-image.js +41 -0
  132. package/framework/js/components/ui-components/dropdown.js +262 -0
  133. package/framework/js/components/ui-components/embed-frame.js +274 -0
  134. package/framework/js/components/ui-components/features.js +33 -0
  135. package/framework/js/components/ui-components/flip-card.js +230 -0
  136. package/framework/js/components/ui-components/form-validator.js +76 -0
  137. package/framework/js/components/ui-components/hero.js +49 -0
  138. package/framework/js/components/ui-components/index.js +12 -0
  139. package/framework/js/components/ui-components/interactive-image.js +235 -0
  140. package/framework/js/components/ui-components/interactive-timeline.js +285 -0
  141. package/framework/js/components/ui-components/intro-cards.js +35 -0
  142. package/framework/js/components/ui-components/lightbox.js +652 -0
  143. package/framework/js/components/ui-components/modal.js +386 -0
  144. package/framework/js/components/ui-components/notifications.js +145 -0
  145. package/framework/js/components/ui-components/progress.js +88 -0
  146. package/framework/js/components/ui-components/quote.js +41 -0
  147. package/framework/js/components/ui-components/stats.js +33 -0
  148. package/framework/js/components/ui-components/steps.js +41 -0
  149. package/framework/js/components/ui-components/tabs.js +255 -0
  150. package/framework/js/components/ui-components/timeline.js +42 -0
  151. package/framework/js/components/ui-components/toggle-group.js +73 -0
  152. package/framework/js/components/ui-components/tooltip.js +458 -0
  153. package/framework/js/components/ui-components/value-display.js +133 -0
  154. package/framework/js/components/ui-components/video-player.js +686 -0
  155. package/framework/js/core/component-catalog.js +121 -0
  156. package/framework/js/core/event-bus.js +178 -0
  157. package/framework/js/core/interaction-catalog.js +149 -0
  158. package/framework/js/dev/runtime-linter.js +1725 -0
  159. package/framework/js/drivers/cmi5-driver.js +768 -0
  160. package/framework/js/drivers/driver-factory.js +77 -0
  161. package/framework/js/drivers/driver-interface.js +110 -0
  162. package/framework/js/drivers/http-driver-base.js +241 -0
  163. package/framework/js/drivers/lti-driver.js +508 -0
  164. package/framework/js/drivers/proxy-driver.js +444 -0
  165. package/framework/js/drivers/scorm-12-driver.js +560 -0
  166. package/framework/js/drivers/scorm-2004-driver.js +775 -0
  167. package/framework/js/drivers/scorm-driver-base.js +112 -0
  168. package/framework/js/engagement/engagement-manager.js +404 -0
  169. package/framework/js/engagement/engagement-progress.js +191 -0
  170. package/framework/js/engagement/engagement-trackers.js +215 -0
  171. package/framework/js/engagement/requirement-strategies.js +268 -0
  172. package/framework/js/main.js +727 -0
  173. package/framework/js/managers/accessibility-manager.js +499 -0
  174. package/framework/js/managers/assessment-manager.js +230 -0
  175. package/framework/js/managers/audio-manager.js +944 -0
  176. package/framework/js/managers/comment-manager.js +88 -0
  177. package/framework/js/managers/flag-manager.js +86 -0
  178. package/framework/js/managers/interaction-manager.js +254 -0
  179. package/framework/js/managers/interaction-registry.js +96 -0
  180. package/framework/js/managers/objective-manager.js +423 -0
  181. package/framework/js/managers/score-manager.js +441 -0
  182. package/framework/js/managers/video-manager.js +536 -0
  183. package/framework/js/navigation/Breadcrumbs.js +234 -0
  184. package/framework/js/navigation/NavigationActions.js +1132 -0
  185. package/framework/js/navigation/NavigationState.js +276 -0
  186. package/framework/js/navigation/NavigationUI.js +574 -0
  187. package/framework/js/navigation/document-gallery.js +357 -0
  188. package/framework/js/navigation/navigation-helpers.js +175 -0
  189. package/framework/js/navigation/navigation-validators.js +174 -0
  190. package/framework/js/state/index.js +8 -0
  191. package/framework/js/state/lms-connection.js +482 -0
  192. package/framework/js/state/lms-error-utils.js +58 -0
  193. package/framework/js/state/state-commits.js +200 -0
  194. package/framework/js/state/state-domains.js +86 -0
  195. package/framework/js/state/state-manager.js +502 -0
  196. package/framework/js/state/state-validation.js +311 -0
  197. package/framework/js/state/transaction-log.js +41 -0
  198. package/framework/js/state/xapi-statement-service.js +325 -0
  199. package/framework/js/utilities/access-control.js +99 -0
  200. package/framework/js/utilities/breakpoint-manager.js +315 -0
  201. package/framework/js/utilities/canvas-slide.js +35 -0
  202. package/framework/js/utilities/conditional-display.js +388 -0
  203. package/framework/js/utilities/course-channel.js +214 -0
  204. package/framework/js/utilities/course-helpers.js +420 -0
  205. package/framework/js/utilities/data-reporter.js +273 -0
  206. package/framework/js/utilities/error-reporter.js +313 -0
  207. package/framework/js/utilities/hotspot-helper.js +341 -0
  208. package/framework/js/utilities/icons.js +348 -0
  209. package/framework/js/utilities/logger.js +92 -0
  210. package/framework/js/utilities/markdown-renderer.js +45 -0
  211. package/framework/js/utilities/scroll-tracker.js +68 -0
  212. package/framework/js/utilities/ui-initializer.js +146 -0
  213. package/framework/js/utilities/utilities.js +293 -0
  214. package/framework/js/utilities/view-manager.js +227 -0
  215. package/framework/js/validation/html-validators.js +422 -0
  216. package/framework/js/validation/scorm-validators.js +438 -0
  217. package/framework/js/vendor/pipwerks.js +931 -0
  218. package/framework/scripts/generate-narration.js +629 -0
  219. package/framework/scripts/tts-providers/azure-provider.js +178 -0
  220. package/framework/scripts/tts-providers/base-provider.js +81 -0
  221. package/framework/scripts/tts-providers/deepgram-provider.js +135 -0
  222. package/framework/scripts/tts-providers/elevenlabs-provider.js +148 -0
  223. package/framework/scripts/tts-providers/google-provider.js +272 -0
  224. package/framework/scripts/tts-providers/index.js +158 -0
  225. package/framework/scripts/tts-providers/openai-provider.js +143 -0
  226. package/framework/version.json +63 -0
  227. package/lib/authoring-api.js +919 -0
  228. package/lib/build-linter.js +450 -0
  229. package/lib/build-packaging.js +186 -0
  230. package/lib/build.js +88 -0
  231. package/lib/cloud.js +691 -0
  232. package/lib/convert.js +341 -0
  233. package/lib/course-parser.js +936 -0
  234. package/lib/course-writer.js +258 -0
  235. package/lib/create.js +248 -0
  236. package/lib/css-index.js +237 -0
  237. package/lib/dev.js +51 -0
  238. package/lib/export-content.js +1246 -0
  239. package/lib/headless-browser.js +413 -0
  240. package/lib/import.js +377 -0
  241. package/lib/index.js +80 -0
  242. package/lib/info.js +79 -0
  243. package/lib/interaction-formatters.js +568 -0
  244. package/lib/manifest/cmi5-manifest.js +63 -0
  245. package/lib/manifest/lti-tool-config.js +53 -0
  246. package/lib/manifest/manifest-factory.js +99 -0
  247. package/lib/manifest/scorm-12-manifest.js +61 -0
  248. package/lib/manifest/scorm-2004-manifest.js +94 -0
  249. package/lib/manifest/scorm-proxy-manifest.js +104 -0
  250. package/lib/manifest-parser.js +96 -0
  251. package/lib/mcp-prompts.js +753 -0
  252. package/lib/mcp-server.js +316 -0
  253. package/lib/narration.js +53 -0
  254. package/lib/pdf-structure.js +142 -0
  255. package/lib/preview-export.js +231 -0
  256. package/lib/preview-routes-api.js +662 -0
  257. package/lib/preview-routes-editing.js +159 -0
  258. package/lib/preview-routes-lms.js +230 -0
  259. package/lib/preview-server.js +564 -0
  260. package/lib/project-utils.js +269 -0
  261. package/lib/proxy-templates/proxy.html +68 -0
  262. package/lib/proxy-templates/scorm-bridge.js +112 -0
  263. package/lib/scaffold.js +193 -0
  264. package/lib/schema-extractor.js +361 -0
  265. package/lib/slide-source-editor.js +586 -0
  266. package/lib/stub-player/app-viewer.js +195 -0
  267. package/lib/stub-player/app.js +370 -0
  268. package/lib/stub-player/catalog-panel.js +312 -0
  269. package/lib/stub-player/config-panel.js +1303 -0
  270. package/lib/stub-player/content-generator.js +586 -0
  271. package/lib/stub-player/content-viewer.js +173 -0
  272. package/lib/stub-player/debug-panel.js +420 -0
  273. package/lib/stub-player/edit-mode.js +922 -0
  274. package/lib/stub-player/edit-utils.js +400 -0
  275. package/lib/stub-player/header-bar.js +354 -0
  276. package/lib/stub-player/interaction-editor.js +210 -0
  277. package/lib/stub-player/interactions-panel.js +565 -0
  278. package/lib/stub-player/lms-api.js +1094 -0
  279. package/lib/stub-player/login-screen.js +74 -0
  280. package/lib/stub-player/outline-mode.js +689 -0
  281. package/lib/stub-player/styles/_assessments-panel.css +245 -0
  282. package/lib/stub-player/styles/_base.css +89 -0
  283. package/lib/stub-player/styles/_catalog-icons.css +96 -0
  284. package/lib/stub-player/styles/_catalog-panel.css +291 -0
  285. package/lib/stub-player/styles/_config-panel.css +636 -0
  286. package/lib/stub-player/styles/_content-viewer.css +834 -0
  287. package/lib/stub-player/styles/_debug-panel.css +576 -0
  288. package/lib/stub-player/styles/_edit-mode.css +128 -0
  289. package/lib/stub-player/styles/_header-bar.css +343 -0
  290. package/lib/stub-player/styles/_interaction-editor.css +140 -0
  291. package/lib/stub-player/styles/_interactions-panel.css +1038 -0
  292. package/lib/stub-player/styles/_login-screen.css +102 -0
  293. package/lib/stub-player/styles/_outline-mode.css +752 -0
  294. package/lib/stub-player/styles.css +15 -0
  295. package/lib/stub-player.js +160 -0
  296. package/lib/test-data-reporting.js +176 -0
  297. package/lib/test-error-reporting.js +146 -0
  298. package/lib/token.js +86 -0
  299. package/lib/upgrade.js +257 -0
  300. package/lib/validation-rules.js +517 -0
  301. package/lib/vite-plugin-content-discovery.js +296 -0
  302. package/package.json +108 -0
  303. package/schemas/XMLSchema.dtd +402 -0
  304. package/schemas/adlcp_v1p3.xsd +111 -0
  305. package/schemas/adlnav_v1p3.xsd +61 -0
  306. package/schemas/adlseq_v1p3.xsd +93 -0
  307. package/schemas/common/anyElement.xsd +27 -0
  308. package/schemas/common/dataTypes.xsd +138 -0
  309. package/schemas/common/elementNames.xsd +767 -0
  310. package/schemas/common/elementTypes.xsd +786 -0
  311. package/schemas/common/rootElement.xsd +31 -0
  312. package/schemas/common/vocabTypes.xsd +345 -0
  313. package/schemas/common/vocabValues.xsd +257 -0
  314. package/schemas/datatypes.dtd +203 -0
  315. package/schemas/ims_xml.xsd +35 -0
  316. package/schemas/imscp_v1p1.xsd +368 -0
  317. package/schemas/imsss_v1p0.xsd +67 -0
  318. package/schemas/imsss_v1p0auxresource.xsd +19 -0
  319. package/schemas/imsss_v1p0control.xsd +20 -0
  320. package/schemas/imsss_v1p0delivery.xsd +17 -0
  321. package/schemas/imsss_v1p0limit.xsd +47 -0
  322. package/schemas/imsss_v1p0objective.xsd +67 -0
  323. package/schemas/imsss_v1p0random.xsd +16 -0
  324. package/schemas/imsss_v1p0rollup.xsd +46 -0
  325. package/schemas/imsss_v1p0seqrule.xsd +108 -0
  326. package/schemas/imsss_v1p0util.xsd +94 -0
  327. package/schemas/license.txt +17 -0
  328. package/schemas/lom.xsd +102 -0
  329. package/schemas/lomCustom.xsd +62 -0
  330. package/schemas/lomLoose.xsd +62 -0
  331. package/schemas/lomStrict.xsd +62 -0
  332. package/schemas/xml.xsd +81 -0
  333. package/template/.env.example +92 -0
  334. package/template/course/assets/audio/example-intro.mp3 +0 -0
  335. package/template/course/assets/audio/example-ui-demo--compact-player.mp3 +0 -0
  336. package/template/course/assets/audio/example-ui-demo--demo-modal.mp3 +0 -0
  337. package/template/course/assets/audio/example-ui-demo--full-player.mp3 +0 -0
  338. package/template/course/assets/docs/example_md_1.md +39 -0
  339. package/template/course/assets/docs/example_md_2.md +41 -0
  340. package/template/course/assets/docs/example_pdf_1_thumbnail.png +0 -0
  341. package/template/course/assets/docs/example_pdf_2.pdf +0 -0
  342. package/template/course/assets/images/course-architecture.svg +36 -0
  343. package/template/course/assets/images/logo.svg +14 -0
  344. package/template/course/assets/widgets/counter-demo.html +190 -0
  345. package/template/course/assets/widgets/gravity-painter.html +384 -0
  346. package/template/course/course-config.js +539 -0
  347. package/template/course/icons.js +19 -0
  348. package/template/course/interactions/PLUGIN_GUIDE.md +97 -0
  349. package/template/course/slides/example-course-structure.js +138 -0
  350. package/template/course/slides/example-final-exam.js +144 -0
  351. package/template/course/slides/example-finishing.js +127 -0
  352. package/template/course/slides/example-interactions-showcase.js +615 -0
  353. package/template/course/slides/example-preview-tour.js +129 -0
  354. package/template/course/slides/example-remedial.js +143 -0
  355. package/template/course/slides/example-summary.js +103 -0
  356. package/template/course/slides/example-ui-showcase.js +1805 -0
  357. package/template/course/slides/example-welcome.js +123 -0
  358. package/template/course/slides/example-workflow.js +140 -0
  359. package/template/course/theme.css +165 -0
  360. package/template/eslint.config.js +47 -0
  361. package/template/package.json +28 -0
  362. 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
+ ---