Project structure
A Prezl project is a folder containing a single prezl.yaml manifest and a files/ directory with the source files being presented.
Folder layout
my-talk/
prezl.yaml # required — the manifest
files/ # required — source files the editor renders
src/
main.ts
dashboard.ts
api.ts
videos/ # optional — referenced by video demos
demo.mp4prezl.yamldeclares the presentation flow: name, projects (optional), stages, demos.prezl.ymlis also accepted as a fallback if you reach for the wrong extension out of habit.files/is the root the Prezl editor shows. Paths in YAML (likeopen.file) and directives (@prezl file=[...]) are relative to this directory.videos/(or any folder you like) holds media referenced from video demos. The YAML just points at a path relative to the project root.
You're free to add any other folders (a README, scripts, an assets/ dir for a README) — Prezl only touches what's inside files/ and what's referenced from prezl.yaml.
Minimal prezl.yaml
yaml
name: My first demo
stages:
- id: main
branch: main
title: Starting point
open: src/main.tsname— shown in the Prezl titlebar.stages— one entry per stage. See Stages for the full shape.
Multiple logical projects
If your talk covers a solution with multiple parts (a .NET backend, a React frontend), declare them with a projects: list and Prezl's explorer will render each as a distinct, color-coded top-level group.
yaml
projects:
- name: Backend
path: src/Backend
icon: dotnet
- name: Frontend
path: src/Frontend
icon: typescriptSee Multi-project layout for details including colour resolution.
What lives where — summary
| Thing | Lives in |
|---|---|
| Project metadata (name) | Top-level keys of prezl.yaml |
| Stages | stages: in prezl.yaml |
| Demo actions (URL / video) | On each stage, under demo: (one) or demos: (a list) |
| Which files are visible on which stage | @prezl file=[...] directives in each file |
| Which regions appear / fold / highlight | Inline @prezl show / collapse / focus directives |
| Named anchors for jumps | @prezl id=<name> directives inside code |
| Multi-project groups | projects: in prezl.yaml |
This keeps each concern where it naturally belongs. The YAML stays small and declarative; the code stays readable and refactor-safe.