Edpak Standard v1.0

An open standard for packaging educational courses

Overview

Edpak is a ZIP-based open standard for packaging educational courses and learning materials. It provides a consistent, portable format for distributing course content across different platforms and learning management systems.

Specification

File Format

An edpak file is a standard ZIP archive with a .edpak file extension.

Required Structure (Core v1.0)

REQUIRED: Every edpak file MUST contain a manifest.json file in the root directory.

Manifest Schema

The manifest.json file must be valid JSON and contain the following fields:

Field Type Required Description
title string Yes The title of the course
version string Yes Version number (semver recommended)
author string Yes Name of the course author or organization
description string No A brief description of the course content
language string No ISO 639-1 language code (e.g., "en", "es")
modules array Yes Array of module objects (see below)

Module Object Schema

Each module object in the modules array must contain:

Field Type Required Description
id string Yes Unique identifier for the module
title string Yes Title of the module
content string No Path to an optional pre-rendered module content file (relative to package root)
order number No Order in which the module should be presented

Example Manifest

{
  "title": "Introduction to Python Programming",
  "version": "1.0.0",
  "author": "Jane Doe",
  "description": "A comprehensive introduction to Python programming for beginners",
  "language": "en",
  "modules": [
    {
      "id": "module-1",
      "title": "Getting Started with Python",
      "content": "modules/01-getting-started.html",
      "order": 1
    },
    {
      "id": "module-2",
      "title": "Variables and Data Types",
      "content": "modules/02-variables.html",
      "order": 2
    }
  ]
}

Content Files

Content files referenced in the manifest can be in various formats:

Directory Structure

The core standard only requires a valid manifest.json, but the reference implementation follows this layout:

course.edpak (ZIP file)
├── manifest.json                # REQUIRED
├── README.txt                   # OPTIONAL human-readable summary
├── images/                      # Image assets (e.g., JPEG, PNG)
│   └── <FileName>
├── videos/                      # Video assets
│   └── <FileName>
└── files/                       # Other asset types
    └── <FileName>

All paths referenced in modules[*].content and in any embedded HTML must resolve to files that exist in the archive.

Extension Fields for Richer Course Data

Edpak v1.0 keeps the core manifest intentionally small. Implementations may add additional top-level fields to manifest.json to preserve richer course structures. The reference implementation uses the following optional extensions:

lessons (optional)

An array describing lesson-level structure within modules.

Field Type Required Description
id string Yes Unique identifier for the lesson (e.g. "lesson-123")
moduleId string Yes ID of the module this lesson belongs to (e.g. "module-1")
title string Yes Lesson title
type string Yes Lesson type (e.g. "Html", "Text", "Image", "Video", "MultipleChoice")
status string No Status value from the source system (e.g. "Active")
order number No Order of the lesson within its module
description string No Lesson description
content string No Raw lesson content from the source system (HTML, text, GUID, etc.)
fileId string No Identifier of an associated binary file, if any
filePath string No Resolved file path inside the archive (e.g. "images/slide1.jpg")

files (optional)

An array describing binary assets included in the package.

Field Type Required Description
id string Yes Source-system file identifier
fileName string Yes Original file name
contentType string Yes MIME content type (e.g. "image/jpeg")
size number No File size in bytes
path string Yes Relative path of the file inside the archive

missingFiles (optional)

An array of human-readable strings describing any files that were referenced in the source system but could not be resolved or downloaded into the package.

x_source_platform (optional)

An object carrying source-system metadata, for example:

x_source_author (optional)

An object documenting how the author field was derived, for example:

x_spec_notes (optional)

An array of strings capturing free-form notes about how the package maps richer platform concepts into the current Edpak core schema. For example, a producer might note that multiple-choice quizzes are represented as lessons plus HTML content, since v1.0 has no dedicated quiz model.

All of these extension fields are OPTIONAL. Consumers that only understand the core Edpak v1.0 fields can safely ignore them, while more advanced tools can use them to reconstruct a richer course model.

Verification Tool

A Python verification tool is provided to check if an edpak file is compliant with this standard.

Installation

pip install edpak-validator

Usage

# From command line
edpak-verify course.edpak

# From Python
from edpak_validator import verify_edpak

is_valid, errors = verify_edpak('course.edpak')
if is_valid:
    print("Valid edpak file!")
else:
    print("Invalid:", errors)

Compliance Requirements

To be considered a valid edpak file, the package must: