Start

Configuration

Configure the Drever entry, canvas, theme, server, build, rehearsal, focus tools, Stage, and plugins.

Start with zero config

A new project runs without drever.config.ts. Add the file at the project root only when the presentation needs a different entry, canvas, theme, development server, build output, rehearsal target, focus tools, Stage, or plugin plan.

ts
import { defineConfig } from "drever";

export default defineConfig({
  entry: "talk.mdx",
  canvas: { width: 1600, height: 900 },
  server: { port: 4317, open: true, strictPort: true },
  build: { outDir: "dist", sourcemap: false },
  rehearsal: { targetDurationMinutes: 20 },
  focusTools: {
    laser: { color: "#c7f03a" },
    pen: { color: "#5b45d8", width: 7 },
    highlighter: { color: "#ffe66d", opacity: 0.28, width: 30 },
  },
  stage: {
    background: "./StageBackground.tsx",
    foreground: "./StageChrome.tsx",
  },
});

Every key is typed and validated. Unknown settings fail with a precise config diagnostic instead of being forwarded to Vite.

Configuration reference

SettingPurpose
entryMDX entry path. The zero-config default is slides.mdx.
themeOne Drever theme definition. See the theme guide.
canvasPositive integer width and height values for the authored surface.
serverCurated development options: host, open, port, and strictPort.
buildStatic outDir and optional source-map mode.
rehearsalPositive targetDurationMinutes used by Speaker View pacing.
focusToolsLaser, Pen, and Highlighter colors, widths, and Highlighter opacity.
stageBackground and foreground React module paths for persistent presentation layers.
pluginsOrdered plugin definitions or typed registrations. See plugins.

Paths resolve from the project root. Keep Stage modules deterministic across Audience, Speaker, Document, and PDF surfaces.

Keep the public surface small

Presentation authors should not need to understand the Vite, Remark, or Rehype configuration graphs. Drever exposes the common project controls above. Plugin developers can contribute those lower-level integrations through the typed plugin descriptor without turning them into global user configuration.

Run npm exec -- drever doctor --json when the local toolchain or browser installation is in doubt. Run npm exec -- drever context --json to inspect the fully resolved canvas, theme, plugins, slides, and Step stops that the compiler will use. Both commands resolve the Drever version installed in the current project.

NextAuthoring slides

Learn how Markdown, Steps, Notes, and React work together.