# Contributing to open-slide Thanks for your interest in improving open-slide! This guide covers the workflow for contributing to the framework itself — the `@open-slide/core` runtime, the `@open-slide/cli` scaffolder, and the supporting apps. If you're authoring slides inside a scaffolded project, you don't need this file — drive your deck through your coding agent or edit `slides//index.tsx` directly. ## Ways to contribute - **Report a bug** via the [bug report template](./.github/ISSUE_TEMPLATE/bug_report.yml). Include a minimal reproduction. - **Propose a feature** via the [feature request template](./.github/ISSUE_TEMPLATE/feature_request.yml). Describe the problem before the solution. - **Ask a question or share what you're building** in [GitHub Discussions](https://github.com/1weiho/open-slide/discussions). - **Send a pull request** — see below. For non-trivial changes, please open an issue or discussion first so we can align on direction before you invest the time. ## Repo layout pnpm + Turbo monorepo. | Path | Package | Role | | --- | --- | --- | | [`packages/core`](packages/core) | `@open-slide/core` | Runtime (viewer, present mode, inspector), Vite plugin, `open-slide` dev/build CLI. | | [`packages/cli`](packages/cli) | `@open-slide/cli` | `npx @open-slide/cli init` scaffolder + project template. | | [`apps/demo`](apps/demo) | private | Local consumer of `@open-slide/core` via `workspace:*`. The dogfood target for the framework. | | [`apps/web`](apps/web) | private | Marketing site (Next.js). | ## Prerequisites - **Node.js 22+** (matches CI). - **pnpm 10.17.0+** — `corepack enable` will pick up the version pinned in `package.json`. - A Unix-y shell. Windows works via WSL. ## Getting set up ```bash git clone https://github.com/1weiho/open-slide.git cd open-slide pnpm install ``` Then run the demo against the local `@open-slide/core`: ```bash pnpm dev ``` `apps/demo` is the fastest way to exercise framework changes — edit `packages/core`, the demo hot-reloads. ## Useful scripts ```bash pnpm dev # turbo: runs demo against local core pnpm build # build all packages pnpm typecheck # tsc across the graph pnpm check # biome (format + lint + organize imports) pnpm check:fix # auto-fix what biome can pnpm test # vitest ``` Filter to one package: ```bash pnpm core