# open-slide workspace Slides as React components. Each slide lives under `slides//index.tsx` and default-exports an array of page components. The `@open-slide/core` runtime handles layout, scaling, navigation, thumbnails, and fullscreen play mode — you just write the pages. ## Getting started ```bash pnpm install pnpm dev ``` Then open the dev server and create a new slide at `slides//index.tsx`. ## Scripts | Command | Description | | --- | --- | | `pnpm dev` | Start the dev server with hot reload. | | `pnpm build` | Build a static bundle you can deploy. | | `pnpm preview` | Preview the built bundle locally. | ## Authoring a slide ```tsx // slides/my-slide/index.tsx import type { Page, SlideMeta } from '@open-slide/core'; const Cover: Page = () => (
Hello
); export const meta: SlideMeta = { title: 'My slide' }; export default [Cover] satisfies Page[]; ``` Every page renders into a fixed **1920 × 1080** canvas — design with absolute pixel values. Put images, videos, and fonts under `slides//assets/` and import them directly. See [`CLAUDE.md`](./CLAUDE.md) for the full authoring guide. ## Navigation - Arrow keys / PageUp / PageDown move between pages. - `F` enters fullscreen play mode; Esc exits. - In play mode: Space / → next, ← prev. ## Claude Code integration This workspace ships with Claude Code skills preconfigured under `.claude/skills/` and `.agents/skills/`. Ask Claude Code to "make slides about X" and the `create-slide` skill takes over. Use `apply-comments` to iterate via inspector-style markers inside your source. ## Config Optional `open-slide.config.ts` at the workspace root: ```ts import type { OpenSlideConfig } from '@open-slide/core'; const openSlideConfig: OpenSlideConfig = { port: 5173, }; export default openSlideConfig; ``` Supported fields: `slidesDir`, `port`.