CourseForge — an Easygenerator-class authoring tool
Executive SRS for a cloud-based e-learning authoring platform that lets any subject-matter expert build engaging courses, collaborate with reviewers, and publish standards-compliant SCORM and xAPI packages — assisted by an author-first AI.
1.Introduction
1.1 Purpose
This document specifies the requirements for CourseForge, a SaaS authoring platform inspired by Easygenerator. CourseForge enables non-instructional-designers — sales enablement leads, HR business partners, compliance officers, product managers — to create, review, and publish online courses in hours instead of weeks. It is intended for engineering, design, and product stakeholders building the v1 product.
1.2 Scope
This SRS covers three capability pillars:
- Core authoring — block-based course editor, interactive content, assessment, branding, and standards-compliant SCORM 1.2 / SCORM 2004 / xAPI export.
- AI authoring assistant — document-to-course generation, question generation, rewrite/tone, translation, and didactic suggestions.
- Collaboration & review — multi-author editing, roles, comments, suggestions, approval workflow, and version history.
Hosted learner delivery, a built-in LRS, and learner analytics are explicitly out of scope for v1 (see §10).
1.3 Definitions
- Course — the top-level publishable unit; contains sections, questions, and metadata.
- Section — an ordered grouping of content blocks (a "page" or "lesson").
- Block — atomic content unit (text, image, video, flip-card, hotspot, etc.).
- SCORM — IEEE/ADL packaging standard for LMS-deliverable courseware (1.2 and 2004 editions).
- xAPI — Experience API; statement-based learning record protocol; cmi5 is its profile for LMS-launched content.
- LMS / LXP — Learning Management / Experience Platform that consumes published packages.
2.Overall Description
2.1 Product Perspective
CourseForge is a new, self-contained, multi-tenant SaaS web application. It does not replace an LMS; it produces courseware consumed by an LMS, LXP, web link, or PDF export. The system has three logical surfaces: the Author Studio (editor + AI), the Review Portal (lightweight reviewer UI), and the Admin Console (workspace, branding, SSO, billing).
2.2 Product Functions (high level)
- Create, edit, duplicate, archive, and template courses.
- Compose lessons from reusable blocks; add quizzes with auto-graded question types.
- Generate first-draft courses and quiz items from uploaded documents using AI.
- Invite co-authors and reviewers; capture inline comments and suggestions; resolve and approve.
- Publish to a stable URL, downloadable SCORM 1.2 / 2004 ZIP, xAPI/cmi5 package, or PDF.
- Apply organization branding (logo, palette, fonts) automatically.
2.3 Assumptions & Constraints
- Modern evergreen browsers (Chrome, Edge, Safari, Firefox; last 2 versions).
- Authoring is desktop-first; learner runtime is fully responsive.
- EU data residency required for enterprise customers (GDPR).
- AI features depend on a third-party LLM provider through a server-side gateway; no PII is sent in prompts.
3.Personas & User Journeys
3.1 Personas
3.2 Primary Journey — "From document to published SCORM"
- Maya creates a new course and uploads a PowerPoint deck + product PDF.
- AI proposes a course outline (sections, learning objectives). Maya tweaks it.
- AI fills each section with content blocks and generates 3–5 questions per objective; Maya edits text and swaps media.
- Maya invites Priya as Reviewer. Priya leaves inline comments; Maya resolves them.
- Dan approves the course. Maya clicks Publish → SCORM 2004.
- The LMS ingests the package; learners launch it; results report via SCORM RTE.
3.3 Secondary Journeys
- Republish updated content via Dynamic SCORM without re-uploading to the LMS.
- Duplicate a course as a template and rebrand for a different business unit.
- Reviewer-only single sign-on via magic link without a paid seat.
4.1Functional Requirements — Authoring
| ID | Requirement | Description | Priority |
|---|---|---|---|
| FR-AUTH-001 | Course CRUD | Create, rename, duplicate, archive, and permanently delete courses with full audit trail. | Must |
| FR-AUTH-002 | Section management | Add, reorder (drag-and-drop), rename, hide, and delete sections within a course. | Must |
| FR-AUTH-003 | Content blocks | Insert rich-text, image, video (upload + YouTube/Vimeo embed), audio, file attachment, code, divider, callout, flip-card, accordion, hotspot, and embed (iframe with allow-list) blocks. | Must |
| FR-AUTH-004 | Question types | Single-choice, multiple-choice, true/false, fill-in-the-blank (text + numeric), drag-and-drop matching, ranking, hotspot, open-ended (manual or AI-graded). | Must |
| FR-AUTH-005 | Assessment rules | Per-course mastery score, randomization, attempt limits, instant or end-of-course feedback, optional remediation links. | Must |
| FR-AUTH-006 | Media library | Workspace-scoped library with upload, search, tagging, reuse across courses, and automatic image optimization (WebP/AVIF, max 5 MB per asset). | Must |
| FR-AUTH-007 | Templates & themes | Built-in starter templates by use case (onboarding, compliance, product training). Apply workspace theme (logo, palette, font pair, button radius) automatically. | Should |
| FR-AUTH-008 | Autosave | All edits autosaved within 2 s; offline edits queued and resynced; explicit version snapshot on demand. | Must |
| FR-AUTH-009 | Preview | Inline preview in desktop, tablet, and mobile viewports without leaving the editor. | Must |
| FR-AUTH-010 | Accessibility helpers | Alt-text required prompt on images, contrast checker on themes, reading-order warnings. | Should |
4.2Functional Requirements — AI Assistant
| ID | Requirement | Description | Priority |
|---|---|---|---|
| FR-AI-001 | Course generation from sources | Accept PDF, DOCX, PPTX, and pasted text (≤ 50 MB combined). Produce an editable course outline with learning objectives within 60 s for typical inputs. | Must |
| FR-AI-002 | Section drafting | Generate text, callouts, and suggested media placeholders for a chosen section using the source material as context. | Must |
| FR-AI-003 | Question generation | Generate 3–10 questions per objective across selected question types; include distractors and rationale. | Must |
| FR-AI-004 | Rewrite & tone | Rewrite selected text for clarity, length, reading level, or tone (formal, friendly, concise). | Must |
| FR-AI-005 | Translation | Translate a course (or a single section) into a chosen target language while preserving block structure and question metadata. | Should |
| FR-AI-006 | Didactic suggestions | Suggest where to insert interactive blocks (flip-card, hotspot) and where to add knowledge checks. | Must |
| FR-AI-007 | Grounding & citations | When sources are provided, link generated paragraphs back to the source file + page/slide reference so authors can verify. | Must |
| FR-AI-008 | Safety & PII | Strip detected emails, phone numbers, and IDs from prompts; respect a workspace-level toggle to disable AI features entirely. | Must |
4.3Functional Requirements — Collaboration & Review
| ID | Requirement | Description | Priority |
|---|---|---|---|
| FR-COL-001 | Course roles | Per-course roles: Owner, Co-author, Reviewer, Viewer. Workspace-level role of Admin overrides. | Must |
| FR-COL-002 | Concurrent editing | Multiple co-authors may edit a course simultaneously; per-block soft-lock prevents conflicting edits; presence indicators show who is on which section. | Must |
| FR-COL-003 | Comments | Threaded comments anchored to any block or question; @mentions trigger in-app + email notifications; resolve/reopen states. | Must |
| FR-COL-004 | Suggestions | Reviewers may propose text changes shown as inline diffs; author accepts or rejects each. | Should |
| FR-COL-005 | Approval workflow | Configurable per-course approval: one or more required approvers; course cannot be published until all approvals are granted. | Must |
| FR-COL-006 | Version history | Auto-snapshots on publish + manual snapshots; restore any prior snapshot; diff between versions at block level. | Must |
| FR-COL-007 | Reviewer access without seat | Magic-link invite that grants comment-only access for a configurable window (default 30 days) without consuming a paid seat. | Should |
| FR-COL-008 | Activity feed | Per-course feed of edits, comments, approvals, and publishes; filterable; exportable as CSV. | Could |
4.4Functional Requirements — Publishing & Export
| ID | Requirement | Description | Priority |
|---|---|---|---|
| FR-PUB-001 | SCORM 1.2 export | Generate a SCORM 1.2 conformant ZIP including imsmanifest.xml and required schema files; report completion, score, and pass/fail via cmi.core.* APIs. | Must |
| FR-PUB-002 | SCORM 2004 export | Support SCORM 2004 3rd and 4th editions; sequencing limited to linear navigation in v1; report cmi.completion_status, cmi.success_status, cmi.score.*. | Must |
| FR-PUB-003 | xAPI / cmi5 export | Produce cmi5-compliant assignable units that emit launched / initialized / completed / passed / failed / answered statements to a configured LRS endpoint. | Must |
| FR-PUB-004 | Direct share link | Publish to an immutable, signed URL with optional password and expiry; preview before sharing. | Must |
| FR-PUB-005 | PDF export | Linearized PDF of all sections (excluding interactive blocks) for offline distribution. | Should |
| FR-PUB-006 | Dynamic update | When a course is republished, learners launching the same SCORM package receive the latest content without LMS re-upload (via a stable hosted asset bundle). | Should |
| FR-PUB-007 | Validation | Run automated SCORM/xAPI validation against ADL test-suite rules pre-export; surface errors and warnings to the author. | Must |
| FR-PUB-008 | LTI 1.3 launch | Optional LTI 1.3 tool registration for direct LMS launch. | Could |
4.5Functional Requirements — Account & Workspace
| ID | Requirement | Description | Priority |
|---|---|---|---|
| FR-ACC-001 | Workspace model | One organization → many workspaces → many courses; user is invited to a workspace with a workspace-level role. | Must |
| FR-ACC-002 | Authentication | Email + password with verification, magic-link, Google, and Microsoft sign-in. Enterprise plans add SAML 2.0 and OIDC SSO with JIT provisioning + SCIM. | Must |
| FR-ACC-003 | Roles & permissions | Workspace roles: Admin, Author, Reviewer, Viewer. Permissions enforced server-side; never trust client checks. | Must |
| FR-ACC-004 | Branding | Upload logo + favicon; pick palette and font pair; preview applied across all courses and shared links. | Must |
| FR-ACC-005 | Billing & seats | Stripe-backed subscription; per-seat author plan; reviewers do not consume seats; usage dashboard for AI credits. | Must |
| FR-ACC-006 | Audit log | Workspace audit log of authentication, role changes, exports, and deletes; retained 12 months; exportable to CSV/SIEM webhook. | Should |
5.Non-Functional Requirements
6.External Interfaces
- LMS / LXP — output: SCORM 1.2, SCORM 2004 (3rd/4th), xAPI/cmi5 package, LTI 1.3 launch (roadmap).
- LRS — outbound xAPI statements to any conformant LRS endpoint configured per workspace.
- SSO — SAML 2.0, OIDC, SCIM 2.0 for user provisioning.
- AI gateway — server-side LLM provider; prompts and completions stored only for 30 days for abuse review, then purged.
- Object storage — S3-compatible bucket per region for media assets and published bundles.
- Email — transactional provider for invites, comment notifications, magic-link reviewer access.
- Payments — Stripe Billing for subscriptions, seat management, and AI credit metering.
7.Data Model (high level)
Core entities and the relationships between them:
Organization 1───* Workspace 1───* Membership *───1 User
│
├──* Course ──* Section ──* Block
│ │ └──* Question ──* Choice
│ ├──* Comment (anchor: block_id | question_id)
│ ├──* Version (snapshot_json, created_by, kind)
│ └──* PublishArtifact (kind: scorm12 | scorm2004 | xapi
│ | pdf | link, signed_url)
├──* MediaAsset (s3_key, mime, tags[])
├──* Theme (logo, palette, font_pair)
└──* AuditLogEntryNotes: Blocks store a discriminated type + a typed payload JSON, validated by Zod on read and write. Versions are full snapshots (small payloads, simpler restore) rather than per-block diffs.
8.UX Principles
- No instructional design degree required. Defaults produce a didactically sound course; advanced controls are progressive disclosure.
- Block-based editor, not a slide canvas. Each block is responsive by construction; no per-pixel layout.
- One primary action per screen. The editor's right rail surfaces the next best action (preview, invite reviewer, publish).
- AI as a draft, not an answer. Every AI output is editable, attributable, and dismissable.
- Trust by transparency. Show conformance status, approval status, and last-published timestamp in the course header.
- Keyboard- and screen-reader-first. The editor is fully operable without a mouse; the runtime ships AA contrast out of the box.
9.Sample Acceptance Criteria
- FR-AUTH-008 Autosave — Given an author edits any block, when 2 s elapse without further input, then the change is persisted and a "Saved" indicator appears; on disconnect, edits queue locally and resync on reconnect without data loss.
- FR-AI-001 Course from sources — Given a 30-slide PPTX, when the author requests a course outline, then a draft of 4–8 sections with learning objectives is returned within 60 s P95, each section linked to one or more source slides.
- FR-COL-005 Approval gate — Given a course configured with two required approvers, when fewer than two approvals are granted, then Publish is disabled and a tooltip lists missing approvers.
- FR-PUB-002 SCORM 2004 — Given an exported package, when uploaded to a SCORM 2004 4th-edition LMS, then it launches without error, reports
cmi.completion_status = "completed"upon finishing all sections, and reports a numericcmi.score.scaledfor assessments. - FR-ACC-002 SSO — Given an Enterprise workspace with SAML configured, when a new user signs in via the IdP, then a workspace Membership is JIT-created with role mapped from the IdP attribute.
10.Out of Scope & Roadmap
Explicitly out of scope for v1
- Built-in learner delivery, learner accounts, and an in-platform LRS.
- Learner analytics dashboards (xAPI statements are emitted to a third-party LRS).
- AI-driven roleplay / voice coaching.
- Native marketplace for third-party templates.
Indicative roadmap
- Phase 1 (MVP, ~3 months) — Authoring, SCORM 1.2 export, share-link, basic AI rewrite + question generation, single-author.
- Phase 2 (~+2 months) — SCORM 2004 + xAPI, collaboration, review & approval, document-to-course AI.
- Phase 3 (~+3 months) — SSO/SAML, dynamic SCORM, audit log, translation, LTI 1.3.
- Phase 4 — Roleplay/coaching, built-in LRS & analytics, marketplace.
11.Glossary & Sources
- SCORM — Sharable Content Object Reference Model (ADL).
- xAPI / Tin Can — Experience API for learning records.
- cmi5 — xAPI profile for LMS-launched assignable units.
- LRS — Learning Record Store.
- LTI 1.3 — Learning Tools Interoperability for tool launch from an LMS.
- WCAG 2.2 AA — Web Content Accessibility Guidelines conformance target.
Primary research sources
- easygenerator.com — Features overview
- easygenerator.com — AI Assistant
- easygenerator.com — Collaboration
- ADL SCORM 1.2 and SCORM 2004 (3rd/4th ed.) specifications.
- IEEE / ADL xAPI v1.0.3 and cmi5 specifications.
- W3C WCAG 2.2 conformance recommendation.