What is a workspace?
A workspace is the folder that holds everything: all of your courses, your shared design system, and the one set of dependencies they all run on. It's what pnpm create tessera makes for you, and it's the folder you open your AI assistant in.
The layout
A freshly created workspace looks like this:
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
-
courses/is where your courses live. Each one is a folder with its own pages, media, quiz settings, and export target. Courses don't interfere with each other; you can rework one without any risk to its neighbours. -
shared/holds the pieces you want every course to use: colours, fonts, buttons, layouts. More on this below. -
package.jsonis standard Node.js housekeeping. You set it up once during Getting started and rarely think about it again. -
AGENTS.mdpoints your assistant to the full technical authoring guide that ships inside Tessera itself, so the assistant always knows the conventions for the version you're on.
One install, many courses
Dependencies are installed once for the whole workspace, no matter how many courses you add. Creating your next course is one command, and every command names the course it works on:
pnpm tessera new product-101 # add a course
pnpm tessera duplicate product-101 product-201 # copy one as a starting point
pnpm dev product-101 # preview it in the browser
pnpm export product-101 # package it for your LMS
This is the practical difference from traditional authoring tools, where each course is an island. In a workspace, your courses sit side by side: duplicate one to start the next, keep a consistent look across a whole curriculum, and update Tessera once for all of them.
The shared design system
Anything in shared/ is available to every course: brand colours,
typography, buttons, page layouts, or whole custom components. It's optional; a
single course can keep everything to itself. But the moment you're building a second
course for the same brand, it pays off: define the look once and every course stays
on-brand automatically.
You don't build it by hand. Describe it, and your assistant does the moving:
"Take the colour palette, fonts, and the callout style from product-101 and move them into the shared design system, then update both courses to use it."
When a course is exported, whatever it uses from shared/ is bundled into
the package, so the LMS never needs to know your courses were related.
It's all just files
A workspace is a plain folder of files. No project database, no proprietary format, no cloud account it lives inside. That has consequences traditional tools can't match:
- Version it. Put the workspace in a git repository and every change to every course has a history you can roll back.
- Collaborate on it. Push it to GitHub and teammates can review changes to a course the way developers review code.
- Back it up and move it. Copy the folder and you've copied everything.
Setting that up takes a few minutes and is covered next, in Your workspace on GitHub.