Multi-SCO Export

Feature Owner : Joylynne Esportuno
Module : Review Workflow
Priority : P4
Sprint #9: Fully Implemented
Date : July 2, 2026


EXECUTIVE SUMMARY

What is this feature ?
Multi-SCO Export packages an adventure as a SCORM zip with each quest represented as its own SCO.

Why does it matter ?
LMS administrators need one importable package that preserves quest-level tracking.

What's the MVP scope ?
Generate SCORM 1.2/2004 zip with manifest and per-quest launch files. Offline content bundling is out of scope.


1. USER PAIN POINT & SOLUTION

Without Multi-SCO Export

Creators may need to export quests one by one for LMS delivery.

Pain Point

Emotional : LMS packaging feels tedious.
Functional : Manual imports are slow and error-prone.
Business Impact : Enterprise delivery friction.

Current State (Already Implemented)

Creator exports one adventure package with multiple SCOs.

Marketing Hook

"Export an entire adventure to LMS as trackable quest SCOs."

2. 4D FRAMEWORK MAPPING

Diagnose

Identifies ordered adventure quest structure.

Design

Maps adventure sequence to SCORM organization.

Develop

Generates manifest, launch pages, and runtime scripts.

Deliver

Creates downloadable LMS package.


3. USER FLOWS

Entry Point

Adventure edit page Multi-SCO Export dialog.

Success Criteria

Creator downloads a valid .zip with one SCO per quest.

Main Flow

  1. Creator opens export dialog.

  2. Selects SCORM version/mastery score.

  3. API verifies ownership.

  4. API fetches ordered adventure quests.

  5. Zip is generated and downloaded.

Edge Cases

  • No quests : Block export with message

  • API error : Show export failure

  • Permission denied : Block non-owner

Decision Points

  • IF SCORM 1.2 selected, generate 1.2 manifest/runtime

  • ELSE generate SCORM 2004 variant


4. INFORMATION ARCHITECTURE

Primary Information

  • Adventure title

  • Quest list/order

  • SCORM version

Secondary Information

  • Mastery score

  • Export file name

Tertiary Information

  • Manifest/resource IDs

Actions

Primary CTA : Export
Secondary Actions : Cancel, choose version


5. WIREFRAMES

Exluded — Feature fully implemented.


6. WIREFLOWS

Exluded — Feature fully implemented.


7. PROTOTYPE

Exluded — Feature fully implemented.


8. BACKEND SCHEMA

Database Tables

  • adventures

  • adventure_sequences

  • quests

Constraints

  • Exporting user must own the adventure

  • Adventure must contain at least one quest

  • SCORM version and mastery score must be valid

  • Manifest values must be XML-escaped


9. API ENDPOINTS

Endpoint 1: POST /api/creator/export/multi-sco

Purpose: Generates a Multi-SCO SCORM zip for an adventure.
Auth: Adventure owner required.
Request Body: Adventure ID, SCORM version, mastery score.
Response Data: Zip file download response.


10. DATA REQUIREMENTS

Frontend Needs

  • Adventure ID and title

  • Selected SCORM version: 1.2 or 2004

  • Mastery score

  • Export loading, success, and error state

  • Download filename/response handling

Backend Needs

  • Authenticated creator ID

  • Adventure ownership record

  • Ordered adventure_sequences rows

  • Quest IDs and titles for manifest/SCO resources

  • SCORM version-specific manifest/runtime template data

API Calls Frontend Will Make

  • Submit export request from the adventure page/dialog

  • Browser receives and downloads zip response

Caching Strategy

  • Do not cache zip responses. Adventure sequence data should be fetched fresh for export so the package reflects current quest order.


11. PERFORMANCE CONSIDERATIONS

Database Optimization

  • Fetch adventure ownership and ordered sequence/quest data with minimal queries. Do not load full quest content unless needed for manifest generation.

Package Generation

  • Zip generation should stay within server memory/time limits. Large adventures should be tested for timeout and response size behavior.

Caching Strategy

  • Generated packages should not be cached by default because export settings and adventure order can change.

API Response Time

  • Small-to-medium adventures should export within a few seconds. The UI must show a loading state and prevent duplicate export clicks.


12. SECURITY & AUTHORIZATION

Who Can Access This Feature?

  • Adventure Creator/Owner: Can export owned adventure.

  • Admin: Only if platform policy allows owner-level export.

  • Learner/Reviewer: No export access.

Authorization Logic

  • The export API must verify the authenticated user owns the adventure before reading sequence data or generating a package.


13. ERROR HANDLING

401 Unauthorized: Prompt creator to sign in again. Do not start export.

403 Forbidden: Return access denied if the authenticated user does not own the adventure.

404 Adventure Not Found: Show an export error that the adventure no longer exists or cannot be accessed.

500 Package Generation Failure: Show export failed and allow retry. Log manifest/zip generation details server-side.


14. TESTING CHECKLIST

Happy Path

  • Export SCORM 1.2 zip

  • Export SCORM 2004 zip

  • Manifest includes all quests in order

  • Each quest launches as a separate SCO

  • LMS import smoke test passes

Edge Cases

  • Unauthorized export blocked

  • Adventure with no quests is blocked

  • Invalid mastery score shows field error

  • Package generation failure does not download corrupt zip


15. OPEN QUESTIONS

For Frontend:

  • Should the export dialog show estimated package size before export?

  • Should the UI display LMS compatibility guidance per SCORM version?

For Backend:

  • Should package include offline assets?

  • Should SCO prerequisites/sequencing be supported?

16. OUT OF SCOPE

  • Offline playback

  • xAPI package export

17. SUCCESS METRICS

  • Export success rate

  • LMS import success rate

  • Enterprise adoption

18. DEPENDENCIES

This feature depends on:

  • Adventure sequences

  • Quest Player SCORM route

  • Export templates

  • Hosted public SCORM quest fetch

These features depend on this:

  • LMS delivery workflows

  • Enterprise content export

  • SCORM-based learner completion reporting


19. TIMELINE & OWNERSHIP

Backend: Joylynne Esportuno
Frontend: Joylynne Esportuno
QA:
Estimated Completion: Feature fully implemented


Was this article helpful?