Quickstart
Fast paths into PanelWave — validate a manifest with the CLI, embed the player in an Angular app, create your first work in the CMS, or let an AI assistant build it with you.
Pick the path that matches what you want to do. Each one takes a few minutes and links into the deeper documentation for that layer.
Use @panelwave/cli to check a manifest against the official schema. This is the fastest way to get hands-on with the format.
Install the CLI
Install the CLI from npm (CLI 1.2.0 bundles the current format schema, 1.7.0):
npm install -g @panelwave/cli
Or run it without installing: npx @panelwave/cli validate ./panelwave.json. Details: CLI reference.
Create a minimal manifest
Save this as panelwave.json. It is the smallest useful work: two panels connected by one edge.
{
"panelwave": {
"version": "1.0.0",
"schema": "https://panelwave.org/schema/1.0/panelwave.schema.json"
},
"meta": {
"id": "my-first-work",
"title": { "en-US": "My First Work" },
"locales": ["en-US"],
"default_locale": "en-US"
},
"assets": {
"catalog": [
{
"id": "img-p1",
"category": "image",
"variants": [
{ "src": "https://picsum.photos/id/101/1280/720", "w": 1280, "h": 720, "mime": "image/jpeg" }
]
},
{
"id": "img-p2",
"category": "image",
"variants": [
{ "src": "https://picsum.photos/id/102/1280/720", "w": 1280, "h": 720, "mime": "image/jpeg" }
]
}
]
},
"chapters": [
{
"id": "ch-1",
"panels": {
"p1": { "layers": [{ "kind": "image", "id": "ly-1", "assetId": "img-p1", "z": 0 }] },
"p2": { "layers": [{ "kind": "image", "id": "ly-2", "assetId": "img-p2", "z": 0 }] }
},
"graph": {
"entry": "p1",
"edges": [{ "from": "p1", "to": "p2", "transition": { "type": "fade", "durationMs": 300 } }]
}
}
]
}
Validate it
panelwave validate ./panelwave.json
Add --strict to fail on warnings, or --json for machine-readable output. See CLI reference.
Break it on purpose
Delete the meta.default_locale line and validate again to see how errors are reported. The validation page explains error output and common mistakes.
Explore the format
Read the manifest structure reference, then drill into chapters and pages, the graph, and panels.
Render a manifest in your own Angular application with @panelwave/player.
Install the library
The player runs in Angular 20 apps (21 and 22 from player 1.2.0) and is published on npm:
npm install @panelwave/player @ngx-translate/core
Then add provideHttpClient(), an ngx-translate loader, the package's UI translation files and the balloon font CSS to your app — Installation has the copy-paste snippets.
Add a manifest to your app
Place a panelwave.json (for example the one from the CLI tab, or one of the demo works) under src/assets/my-story/.
Drop in the player component
The embeddable component is PlayerShellComponent (selector pw-player-shell). Point it at the manifest:
import { Component } from '@angular/core';
import { PlayerShellComponent } from '@panelwave/player';
@Component({
selector: 'app-root',
imports: [PlayerShellComponent],
template: `<pw-player-shell manifestUrl="assets/my-story/panelwave.json" [showToolbar]="true" />`,
styles: `:host { display: block; height: 100dvh; }`,
})
export class AppComponent {}
You can also fetch the JSON yourself and bind the parsed object via [manifest] — see Quickstart: Embed.
Configure the player
Behavior is controlled through individual inputs on pw-player-shell:
<pw-player-shell
manifestUrl="assets/my-story/panelwave.json"
locale="de-DE"
[showToolbar]="true"
[entitlementSnapshot]="snapshot"
(panelChange)="onPanel($event)">
</pw-player-shell>
All inputs and defaults: Configuration. To try a manifest before writing any code, open it in the live demo.
Go deeper
Wire up events and inputs on Inputs & outputs, save reader progress with Saving progress, and follow the full embedding guide.
Author your first interactive graphic novel visually — no JSON editing required.
Sign in and create a work
From the dashboard, choose New Work. The Create New Work wizard walks you through three steps: Basic Info (title and URL), Languages (supported languages), and Details (age rating and tags). See Works.
Upload your artwork
Add your panel art in the asset library. The CMS generates the resolution and format variants the player needs.
Build pages and panels
In the editor, lay out pages and panels on the canvas and stack layers per panel. Start with the editor layout, then pages & panels and layers.
Add dialogue and interactivity
Place speech bubbles and hotspots, and shape the reading flow — including branches — in the graph view.
Preview and publish
Use Preview to read your work exactly as readers will (the CMS embeds the real player), then follow Publishing to go live.
Have a script and your artwork ready? Let an assistant such as Claude, ChatGPT or Cursor do the structural work with you.
Connect the assistant
Add https://mcp.panelwave.org/mcp as a connector in your assistant, sign in to PanelWave and choose what it may do. See Connect Claude, Connect ChatGPT or Claude Code, Cursor & others.
Turn the script into a work
Paste or attach your script and ask: "Create a PanelWave work from this, one panel per shot, with mobile and A4 pages." The assistant shows a dry run, then creates chapters, panels, characters and speech balloons.
Add the artwork
Upload the images in the asset library — or, with the local bridge, let the assistant upload a whole folder — and ask it to attach each image to its panel.
Check, review, publish
Ask the assistant to validate the work and apply the safe fixes. Review the result in the editor and Preview; publishing to production needs your confirmation.