Tessera

A JavaScript framework for building eLearning courses.

Free and MIT licensed. Needs Node.js 24. Designed for AI-assisted authoring.

Author with AI

Tell your assistant what you want in plain English. It writes the pages, builds the quiz, and drops your assets in place. The preview in your browser updates as it goes.

The wiring is standard. The design is yours.

Tessera handles what the LMS cares about: tracking, completion, scoring, navigation, and saved state. There is no required look, layout, or component set.

You ask

Add the Workplace Safety section as described in the storyboard safety-overview.docx.

files written
courses/product-101/
├── pages/
│   └── workplace-safety/          # each section is a folder
│       ├── _meta.js               # section title and page order
│       ├── introduction.svelte
│       ├── safety-overview.svelte
│       └── hazard-quiz.svelte     # 5 scored questions
└── assets/
    └── safety-overview.mp4        # copied in for you

Your assistant works the same hooks every time, so its effort goes into the course, not recreating SCORM. Drag-and-drop, hotspot, branching scenario: build any assessment.

Every workspace ships the authoring guide your assistant reads first.

Every build gets checked

Your assistant sees structure and accessibility problems while it works, so most are fixed before you ever look.

terminal
# build it, render it, audit it
pnpm check workplace-safety

# pass or fail against the ruleset you pick:
# WCAG 2.0 A, 2.0 AA, or 2.1 AA

The audit renders every page in a real browser and checks for accessibility and other structural issues.

Keep every course in one folder

One project holds every course and the design system they share. It is all plain files, so it goes in git like any other project.

my-courses/
my-courses/
├── package.json        # one set of dependencies for every course
├── shared/             # your design system, shared across courses
├── courses/
│   ├── starter-course/ # each course is a self-contained folder
│   └── …               # add as many as you like
└── AGENTS.md           # points your assistant to the authoring guide

Each course is a self-contained folder that exports on its own. No proprietary format, no seat licence.

Send it to any LMS

Run pnpm export <course> and get a package you can upload today. One course, every standard.

Emit custom xAPI statements from any component when completion and score are not enough.

Start building

Run this in a terminal. You will have a course in your browser in a couple of minutes.

pnpm create tessera@latest my-courses
View on GitHub →

Don't have Node.js or pnpm? Start with Getting started.

Copied