Quick start
Here are some tested prompts you can copy-paste into your favourite agent — Claude Code, Cursor, Codex, or any other. Pick your product and copy.
- Gantt
- Scheduler
- Scheduler Pro
- Grid
- Calendar
- TaskBoard
Set up Bryntum Gantt in this project.
**Before writing code:**
- **Use TypeScript by default** unless the user has explicitly asked for plain JavaScript. When scaffolding, pick the TypeScript template (e.g. `npm create vite@latest . -- --template react-ts`, `--template vue-ts`, etc.). Angular is TypeScript by default.
- Detect the framework from `package.json` (React, Angular, Vue, or vanilla JS). If there's no app yet, ask the user which framework to scaffold and create it in-place — don't `rm -rf` the directory.
- Look up the latest docs: use the `search_bryntum_docs` MCP tool with `product: "gantt"` if it's already installed, otherwise silently fall back to https://bryntum.com/products/gantt/docs/. Don't pause the build to ask the user to install MCP — that can come after the demo works.
- Get the current version with `npm view @bryntum/gantt-trial version`. Pin exact versions (no `^`).
**1. Install (trial unless the user has a license):**
- **Detect license first:** check for an existing `.npmrc` (in the project or `~/.npmrc`) pointing at `npm.bryntum.com` (or `npm-us.bryntum.com`) — that signals the user is on a paid license. Otherwise ask the user once: *"Do you have a Bryntum license?"* Present the choice neutrally — **never label "trial" as recommended** in any UI you render. If the user doesn't answer, silently fall back to trial packages so the app still builds, but treat that as a fallback, not a recommendation.
- **Trial:** install the main package via npm alias so imports stay standard: `npm install @bryntum/gantt@npm:@bryntum/gantt-trial@<version>`. No `.npmrc` or auth needed.
- **Licensed:** install the non-trial package directly: `npm install @bryntum/gantt@<version>`. The `.npmrc` provides the auth.
- Framework wrapper at the same version (no `-trial` suffix in either case), e.g. `@bryntum/gantt-react`, `@bryntum/gantt-angular`, `@bryntum/gantt-vue-3`. Skip for vanilla JS.
**2. Component with sensible defaults:**
- `viewPreset: "weekAndDayLetter"`, project `startDate`/`endDate`, a `name` column, a small `barMargin`, and realistic `tasks` + `dependencies`.
- Use `tasks`/`dependencies`/`resources`/`assignments` as component props (not `tasksData`/`dependenciesData` etc. — deprecated in v7).
- Don't combine a `project` prop with inline data props in the same component — it throws.
- Size the full ancestor chain — `html, body, #root` all need an explicit height (e.g. `100%` or `100vh`) and so does the immediate wrapper around `<BryntumGantt>`. If any link in the chain has no height, the Gantt falls back to its `minHeight` and the console warns *"Gantt is sized by its predefined minHeight, likely this is not intended"*. See the "Basics/Sizing the component" guide.
**3. CSS (Bryntum 7+, plain CSS only — no SASS, no legacy single-file themes):**
Import in this order:
1. `@bryntum/gantt/fontawesome/css/fontawesome.css`
2. `@bryntum/gantt/fontawesome/css/solid.css`
3. `@bryntum/gantt/gantt.css` (structural — required)
4. Theme, default `@bryntum/gantt/svalbard-light.css`
Use Poppins font:
`@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');`
`body { font-family: 'Poppins', 'Segoe UI', Arial, sans-serif; }`
**4. Framework specifics:**
- **React**: `<BryntumGantt>` from `@bryntum/gantt-react`, config as JSX props, `useRef` for the instance. Handle StrictMode double-mount cleanly.
- **Angular**: `<bryntum-gantt>` from `@bryntum/gantt-angular`, bind every config with `[prop]="..."` in the template.
- **Vue**: `<bryntum-gantt>` from `@bryntum/gantt-vue-3`, bind via `v-bind` or props.
- **Vanilla**: `import { Gantt } from '@bryntum/gantt'`, instantiate with `appendTo`.
**5. Verify:**
- Start the dev server (`npm run dev` or framework equivalent) and **leave it running** when you finish so the user can open it in a browser.
- Fix any console or build errors before handing off.
- Suggest 3 features to add (Bryntum AI assistant, etc.) and link the relevant docs.
- To add or connect to a backend to persist your data, point the user at the CrudManager guide: https://bryntum.com/products/gantt/docs/guide/Gantt/data/crud_manager.
- For richer Bryntum guidance on next steps (advanced features, framework integrations, backend persistence, data binding), suggest the user install the Bryntum AI Agent skill (https://github.com/bryntum/skills) and the Bryntum MCP Server (https://mcp.bryntum.com). Both give the AI agent canonical, up-to-date Bryntum knowledge.
Set up Bryntum Scheduler in this project.
**Before writing code:**
- **Use TypeScript by default** unless the user has explicitly asked for plain JavaScript. When scaffolding, pick the TypeScript template (e.g. `npm create vite@latest . -- --template react-ts`, `--template vue-ts`, etc.). Angular is TypeScript by default.
- Detect the framework from `package.json` (React, Angular, Vue, or vanilla JS). If there's no app yet, ask the user which framework to scaffold and create it in-place — don't `rm -rf` the directory.
- Look up the latest docs: use the `search_bryntum_docs` MCP tool with `product: "scheduler"` if it's already installed, otherwise silently fall back to https://bryntum.com/products/scheduler/docs/. Don't pause the build to ask the user to install MCP — that can come after the demo works.
- Get the current version with `npm view @bryntum/scheduler-trial version`. Pin exact versions (no `^`).
**1. Install (trial unless the user has a license):**
- **Detect license first:** check for an existing `.npmrc` (in the project or `~/.npmrc`) pointing at `npm.bryntum.com` (or `npm-us.bryntum.com`) — that signals the user is on a paid license. Otherwise ask the user once: *"Do you have a Bryntum license?"* Present the choice neutrally — **never label "trial" as recommended** in any UI you render. If the user doesn't answer, silently fall back to trial packages so the app still builds, but treat that as a fallback, not a recommendation.
- **Trial:** install the main package via npm alias so imports stay standard: `npm install @bryntum/scheduler@npm:@bryntum/scheduler-trial@<version>`. No `.npmrc` or auth needed.
- **Licensed:** install the non-trial package directly: `npm install @bryntum/scheduler@<version>`. The `.npmrc` provides the auth.
- Framework wrapper at the same version (no `-trial` suffix in either case), e.g. `@bryntum/scheduler-react`, `@bryntum/scheduler-angular`, `@bryntum/scheduler-vue-3`. Skip for vanilla JS.
**2. Component with sensible defaults:**
- `viewPreset: "hourAndDay"`, `startDate`/`endDate` bracketing the seed data, a small `barMargin`, a `columns` array with at least a `name` column, and realistic `events` + `resources`.
- Use `events`/`resources`/`assignments` as component props (not `eventsData`/`resourcesData` etc. — deprecated in v7). Add `assignments` only if one event needs multiple resources.
- Each event needs a `resourceId` (or a row in `assignments` linking it to one or more resources), a `startDate`, and either a `duration` + `durationUnit` or an `endDate`.
- Don't combine a `crudManager` prop with inline data props in the same component — it throws.
- Size the full ancestor chain — `html, body, #root` all need an explicit height (e.g. `100%` or `100vh`) and so does the immediate wrapper around `<BryntumScheduler>`. If any link in the chain has no height, the Scheduler falls back to its `minHeight` and the console warns *"Scheduler is sized by its predefined minHeight, likely this is not intended"*. See the "Basics/Sizing the component" guide.
**3. CSS (Bryntum 7+, plain CSS only — no SASS, no legacy single-file themes):**
Import in this order:
1. `@bryntum/scheduler/fontawesome/css/fontawesome.css`
2. `@bryntum/scheduler/fontawesome/css/solid.css`
3. `@bryntum/scheduler/scheduler.css` (structural — required)
4. Theme, default `@bryntum/scheduler/svalbard-light.css`
Use Poppins font:
`@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');`
`body { font-family: 'Poppins', 'Segoe UI', Arial, sans-serif; }`
**4. Framework specifics:**
- **React**: `<BryntumScheduler>` from `@bryntum/scheduler-react`, config as JSX props, `useRef` for the instance. Handle StrictMode double-mount cleanly.
- **Angular**: `<bryntum-scheduler>` from `@bryntum/scheduler-angular`, bind every config with `[prop]="..."` in the template.
- **Vue**: `<bryntum-scheduler>` from `@bryntum/scheduler-vue-3`, bind via `v-bind` or props.
- **Vanilla**: `import { Scheduler } from '@bryntum/scheduler'`, instantiate with `appendTo`.
**5. Verify:**
- Start the dev server (`npm run dev` or framework equivalent) and **leave it running** when you finish so the user can open it in a browser.
- Fix any console or build errors before handing off.
- Suggest 3 features to add (Bryntum AI assistant, etc.) and link the relevant docs.
- To add or connect to a backend to persist your data, point the user at the CrudManager guide: https://bryntum.com/products/scheduler/docs/guide/Scheduler/data/crud_manager.
- For richer Bryntum guidance on next steps (advanced features, framework integrations, backend persistence, data binding), suggest the user install the Bryntum AI Agent skill (https://github.com/bryntum/skills) and the Bryntum MCP Server (https://mcp.bryntum.com). Both give the AI agent canonical, up-to-date Bryntum knowledge.
Set up Bryntum Scheduler Pro in this project.
**Before writing code:**
- **Use TypeScript by default** unless the user has explicitly asked for plain JavaScript. When scaffolding, pick the TypeScript template (e.g. `npm create vite@latest . -- --template react-ts`, `--template vue-ts`, etc.). Angular is TypeScript by default.
- Detect the framework from `package.json` (React, Angular, Vue, or vanilla JS). If there's no app yet, ask the user which framework to scaffold and create it in-place — don't `rm -rf` the directory.
- Look up the latest docs: use the `search_bryntum_docs` MCP tool with `product: "schedulerpro"` if it's already installed, otherwise silently fall back to https://bryntum.com/products/schedulerpro/docs/. Don't pause the build to ask the user to install MCP — that can come after the demo works.
- Get the current version with `npm view @bryntum/schedulerpro-trial version`. Pin exact versions (no `^`).
**1. Install (trial unless the user has a license):**
- **Detect license first:** check for an existing `.npmrc` (in the project or `~/.npmrc`) pointing at `npm.bryntum.com` (or `npm-us.bryntum.com`) — that signals the user is on a paid license. Otherwise ask the user once: *"Do you have a Bryntum license?"* Present the choice neutrally — **never label "trial" as recommended** in any UI you render. If the user doesn't answer, silently fall back to trial packages so the app still builds, but treat that as a fallback, not a recommendation.
- **Trial:** install the main package via npm alias so imports stay standard: `npm install @bryntum/schedulerpro@npm:@bryntum/schedulerpro-trial@<version>`. No `.npmrc` or auth needed.
- **Licensed:** install the non-trial package directly: `npm install @bryntum/schedulerpro@<version>`. The `.npmrc` provides the auth.
- Framework wrapper at the same version (no `-trial` suffix in either case), e.g. `@bryntum/schedulerpro-react`, `@bryntum/schedulerpro-angular`, `@bryntum/schedulerpro-vue-3`. Skip for vanilla JS.
**2. Component with sensible defaults:**
- `viewPreset: "hourAndDay"`, project `startDate`/`endDate`, a small `barMargin`, a `columns` array with at least a `name` column, and realistic `events` + `resources` + `assignments` (add `dependencies` to demonstrate the engine).
- Use `events`/`resources`/`assignments`/`dependencies` as component props (not `eventsData`/`resourcesData` etc. — deprecated in v7).
- Scheduler Pro uses the same scheduling engine as Gantt, so events have `startDate` + `duration` (+ `durationUnit`); `endDate` is derived. Dependencies (`{ id, fromEvent, toEvent, type }`) reschedule successors automatically.
- Don't combine a `project` prop with inline data props in the same component — it throws.
- Size the full ancestor chain — `html, body, #root` all need an explicit height (e.g. `100%` or `100vh`) and so does the immediate wrapper around `<BryntumSchedulerPro>`. If any link in the chain has no height, the Scheduler Pro falls back to its `minHeight` and the console warns *"Scheduler Pro is sized by its predefined minHeight, likely this is not intended"*. See the "Basics/Sizing the component" guide.
**3. CSS (Bryntum 7+, plain CSS only — no SASS, no legacy single-file themes):**
Import in this order:
1. `@bryntum/schedulerpro/fontawesome/css/fontawesome.css`
2. `@bryntum/schedulerpro/fontawesome/css/solid.css`
3. `@bryntum/schedulerpro/schedulerpro.css` (structural — required)
4. Theme, default `@bryntum/schedulerpro/svalbard-light.css`
Use Poppins font:
`@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');`
`body { font-family: 'Poppins', 'Segoe UI', Arial, sans-serif; }`
**4. Framework specifics:**
- **React**: `<BryntumSchedulerPro>` from `@bryntum/schedulerpro-react`, config as JSX props, `useRef` for the instance. Handle StrictMode double-mount cleanly.
- **Angular**: `<bryntum-schedulerpro>` from `@bryntum/schedulerpro-angular`, bind every config with `[prop]="..."` in the template.
- **Vue**: `<bryntum-schedulerpro>` from `@bryntum/schedulerpro-vue-3`, bind via `v-bind` or props.
- **Vanilla**: `import { SchedulerPro } from '@bryntum/schedulerpro'`, instantiate with `appendTo`.
**5. Verify:**
- Start the dev server (`npm run dev` or framework equivalent) and **leave it running** when you finish so the user can open it in a browser.
- Fix any console or build errors before handing off.
- Suggest 3 features to add (Bryntum AI assistant, etc.) and link the relevant docs.
- To add or connect to a backend to persist your data, point the user at the CrudManager guide: https://bryntum.com/products/schedulerpro/docs/guide/SchedulerPro/data/crud_manager.
- For richer Bryntum guidance on next steps (advanced features, framework integrations, backend persistence, data binding), suggest the user install the Bryntum AI Agent skill (https://github.com/bryntum/skills) and the Bryntum MCP Server (https://mcp.bryntum.com). Both give the AI agent canonical, up-to-date Bryntum knowledge.
Set up Bryntum Grid in this project.
**Before writing code:**
- **Use TypeScript by default** unless the user has explicitly asked for plain JavaScript. When scaffolding, pick the TypeScript template (e.g. `npm create vite@latest . -- --template react-ts`, `--template vue-ts`, etc.). Angular is TypeScript by default.
- Detect the framework from `package.json` (React, Angular, Vue, or vanilla JS). If there's no app yet, ask the user which framework to scaffold and create it in-place — don't `rm -rf` the directory.
- Look up the latest docs: use the `search_bryntum_docs` MCP tool with `product: "grid"` if it's already installed, otherwise silently fall back to https://bryntum.com/products/grid/docs/. Don't pause the build to ask the user to install MCP — that can come after the demo works.
- Get the current version with `npm view @bryntum/grid-trial version`. Pin exact versions (no `^`).
**1. Install (trial unless the user has a license):**
- **Detect license first:** check for an existing `.npmrc` (in the project or `~/.npmrc`) pointing at `npm.bryntum.com` (or `npm-us.bryntum.com`) — that signals the user is on a paid license. Otherwise ask the user once: *"Do you have a Bryntum license?"* Present the choice neutrally — **never label "trial" as recommended** in any UI you render. If the user doesn't answer, silently fall back to trial packages so the app still builds, but treat that as a fallback, not a recommendation.
- **Trial:** install the main package via npm alias so imports stay standard: `npm install @bryntum/grid@npm:@bryntum/grid-trial@<version>`. No `.npmrc` or auth needed.
- **Licensed:** install the non-trial package directly: `npm install @bryntum/grid@<version>`. The `.npmrc` provides the auth.
- Framework wrapper at the same version (no `-trial` suffix in either case), e.g. `@bryntum/grid-react`, `@bryntum/grid-angular`, `@bryntum/grid-vue-3`. Skip for vanilla JS.
**2. Component with sensible defaults:**
- A `columns` array with 3–5 realistic columns. Set `text`, `field`, and choose a column `type` per field (e.g. `"number"`, `"date"`, `"check"`, `"percent"`, `"tree"`). Add an `editor` (e.g. `{ type: "textfield", required: true }`) on columns that need required input.
- DateColumn needs actual Date objects, not strings.
- A `data` array with 10–20 realistic rows whose fields match the column `field`s.
- Pass data via the `data` prop (or via an external `store`) — the legacy `dataset` option is deprecated.
- Set `features: { sort: true, filterBar: true, cellEdit: true }` for sensible interactivity.
- Size the full ancestor chain — `html, body, #root` all need an explicit height (e.g. `100%` or `100vh`) and so does the immediate wrapper around `<BryntumGrid>`. If any link in the chain has no height, the Grid falls back to its `minHeight` and the console warns *"Grid is sized by its predefined minHeight, likely this is not intended"*. See the "Basics/Sizing the component" guide.
**3. CSS (Bryntum 7+, plain CSS only — no SASS, no legacy single-file themes):**
Import in this order:
1. `@bryntum/grid/fontawesome/css/fontawesome.css`
2. `@bryntum/grid/fontawesome/css/solid.css`
3. `@bryntum/grid/grid.css` (structural — required)
4. Theme, default `@bryntum/grid/svalbard-light.css`
Use Poppins font:
`@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');`
`body { font-family: 'Poppins', 'Segoe UI', Arial, sans-serif; }`
**4. Framework specifics:**
- **React**: `<BryntumGrid>` from `@bryntum/grid-react`, config as JSX props, `useRef` for the instance. Handle StrictMode double-mount cleanly.
- **Angular**: `<bryntum-grid>` from `@bryntum/grid-angular`, bind every config with `[prop]="..."` in the template.
- **Vue**: `<bryntum-grid>` from `@bryntum/grid-vue-3`, bind via `v-bind` or props.
- **Vanilla**: `import { Grid } from '@bryntum/grid'`, instantiate with `appendTo`.
**5. Verify:**
- Start the dev server (`npm run dev` or framework equivalent) and **leave it running** when you finish so the user can open it in a browser.
- Fix any console or build errors before handing off.
- Suggest 3 features to add (Bryntum AI assistant, etc.) and link the relevant docs.
- To add or connect to a backend to persist your data, point the user at the AjaxStore guide: https://bryntum.com/products/grid/docs/guide/Grid/data/ajaxstore. Grid has no CrudManager.
- For richer Bryntum guidance on next steps (advanced features, framework integrations, backend persistence, data binding), suggest the user install the Bryntum AI Agent skill (https://github.com/bryntum/skills) and the Bryntum MCP Server (https://mcp.bryntum.com). Both give the AI agent canonical, up-to-date Bryntum knowledge.
Set up Bryntum Calendar in this project.
**Before writing code:**
- **Use TypeScript by default** unless the user has explicitly asked for plain JavaScript. When scaffolding, pick the TypeScript template (e.g. `npm create vite@latest . -- --template react-ts`, `--template vue-ts`, etc.). Angular is TypeScript by default.
- Detect the framework from `package.json` (React, Angular, Vue, or vanilla JS). If there's no app yet, ask the user which framework to scaffold and create it in-place — don't `rm -rf` the directory.
- Look up the latest docs: use the `search_bryntum_docs` MCP tool with `product: "calendar"` if it's already installed, otherwise silently fall back to https://bryntum.com/products/calendar/docs/. Don't pause the build to ask the user to install MCP — that can come after the demo works.
- Get the current version with `npm view @bryntum/calendar-trial version`. Pin exact versions (no `^`).
**1. Install (trial unless the user has a license):**
- **Detect license first:** check for an existing `.npmrc` (in the project or `~/.npmrc`) pointing at `npm.bryntum.com` (or `npm-us.bryntum.com`) — that signals the user is on a paid license. Otherwise ask the user once: *"Do you have a Bryntum license?"* Present the choice neutrally — **never label "trial" as recommended** in any UI you render. If the user doesn't answer, silently fall back to trial packages so the app still builds, but treat that as a fallback, not a recommendation.
- **Trial:** install the main package via npm alias so imports stay standard: `npm install @bryntum/calendar@npm:@bryntum/calendar-trial@<version>`. No `.npmrc` or auth needed.
- **Licensed:** install the non-trial package directly: `npm install @bryntum/calendar@<version>`. The `.npmrc` provides the auth.
- Framework wrapper at the same version (no `-trial` suffix in either case), e.g. `@bryntum/calendar-react`, `@bryntum/calendar-angular`, `@bryntum/calendar-vue-3`. Skip for vanilla JS.
**2. Component with sensible defaults:**
- `mode: "week"` (other options: `"day"`, `"month"`, `"year"`, `"agenda"`), an initial `date` near the seed data, and realistic `events` + `resources` (resources are optional — use them if you want colour-coded calendars per person or category).
- Each event needs a `startDate` and either an `endDate` or `duration` + `durationUnit`. Set `allDay: true` for all-day events. Link to a resource via `resourceId` for colour coding.
- Use `events`/`resources` as component props (not `eventsData`/`resourcesData` — deprecated in v7).
- Calendar has **no dependencies** — do not add a `dependencies` prop.
- Don't combine a `crudManager` prop with inline data props in the same component — it throws.
- Size the full ancestor chain — `html, body, #root` all need an explicit height (e.g. `100%` or `100vh`) and so does the immediate wrapper around `<BryntumCalendar>`. If any link in the chain has no height, the Calendar falls back to its `minHeight` and the console warns *"Calendar is sized by its predefined minHeight, likely this is not intended"*. See the "Basics/Sizing the component" guide.
**3. CSS (Bryntum 7+, plain CSS only — no SASS, no legacy single-file themes):**
Import in this order:
1. `@bryntum/calendar/fontawesome/css/fontawesome.css`
2. `@bryntum/calendar/fontawesome/css/solid.css`
3. `@bryntum/calendar/calendar.css` (structural — required)
4. Theme, default `@bryntum/calendar/svalbard-light.css`
Use Poppins font:
`@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');`
`body { font-family: 'Poppins', 'Segoe UI', Arial, sans-serif; }`
**4. Framework specifics:**
- **React**: `<BryntumCalendar>` from `@bryntum/calendar-react`, config as JSX props, `useRef` for the instance. Handle StrictMode double-mount cleanly.
- **Angular**: `<bryntum-calendar>` from `@bryntum/calendar-angular`, bind every config with `[prop]="..."` in the template.
- **Vue**: `<bryntum-calendar>` from `@bryntum/calendar-vue-3`, bind via `v-bind` or props.
- **Vanilla**: `import { Calendar } from '@bryntum/calendar'`, instantiate with `appendTo`.
**5. Verify:**
- Start the dev server (`npm run dev` or framework equivalent) and **leave it running** when you finish so the user can open it in a browser.
- Fix any console or build errors before handing off.
- Suggest 3 features to add (Bryntum AI assistant, etc.) and link the relevant docs.
- To add or connect to a backend to persist your data, point the user at the CrudManager guide: https://bryntum.com/products/calendar/docs/guide/Calendar/data/crud_manager.
- For richer Bryntum guidance on next steps (advanced features, framework integrations, backend persistence, data binding), suggest the user install the Bryntum AI Agent skill (https://github.com/bryntum/skills) and the Bryntum MCP Server (https://mcp.bryntum.com). Both give the AI agent canonical, up-to-date Bryntum knowledge.
Set up Bryntum TaskBoard in this project.
**Before writing code:**
- **Use TypeScript by default** unless the user has explicitly asked for plain JavaScript. When scaffolding, pick the TypeScript template (e.g. `npm create vite@latest . -- --template react-ts`, `--template vue-ts`, etc.). Angular is TypeScript by default.
- Detect the framework from `package.json` (React, Angular, Vue, or vanilla JS). If there's no app yet, ask the user which framework to scaffold and create it in-place — don't `rm -rf` the directory.
- Look up the latest docs: use the `search_bryntum_docs` MCP tool with `product: "taskboard"` if it's already installed, otherwise silently fall back to https://bryntum.com/products/taskboard/docs/. Don't pause the build to ask the user to install MCP — that can come after the demo works.
- Get the current version with `npm view @bryntum/taskboard-trial version`. Pin exact versions (no `^`).
**1. Install (trial unless the user has a license):**
- **Detect license first:** check for an existing `.npmrc` (in the project or `~/.npmrc`) pointing at `npm.bryntum.com` (or `npm-us.bryntum.com`) — that signals the user is on a paid license. Otherwise ask the user once: *"Do you have a Bryntum license?"* Present the choice neutrally — **never label "trial" as recommended** in any UI you render. If the user doesn't answer, silently fall back to trial packages so the app still builds, but treat that as a fallback, not a recommendation.
- **Trial:** install the main package via npm alias so imports stay standard: `npm install @bryntum/taskboard@npm:@bryntum/taskboard-trial@<version>`. No `.npmrc` or auth needed.
- **Licensed:** install the non-trial package directly: `npm install @bryntum/taskboard@<version>`. The `.npmrc` provides the auth.
- Framework wrapper at the same version (no `-trial` suffix in either case), e.g. `@bryntum/taskboard-react`, `@bryntum/taskboard-angular`, `@bryntum/taskboard-vue-3`. Skip for vanilla JS.
**2. Component with sensible defaults:**
- A `columns` array (e.g. `[{ id: "todo", text: "Todo" }, { id: "doing", text: "Doing" }, { id: "done", text: "Done" }]`), a `columnField` naming the task field that determines column placement (e.g. `"status"`), and realistic `tasks` inside a `project` config. Optionally add `resources` + `assignments` inside the same `project` if you want avatars on cards.
- Each task needs at least `id`, `name`, and a value for the `columnField` that matches a column `id`.
- TaskBoard has **no time axis** — tasks don't need `startDate`/`endDate`. Optional task fields like `prio`, `color`, or custom data render via `headerItems`/`bodyItems`/`footerItems` templates.
- Put `tasks`/`resources`/`assignments` inside the single `project` config — don't pass them as separate `tasksData`/`resourcesData` etc. props (deprecated in v7).
- Size the full ancestor chain — `html, body, #root` all need an explicit height (e.g. `100%` or `100vh`) and so does the immediate wrapper around `<BryntumTaskBoard>`. If any link in the chain has no height, the TaskBoard falls back to its `minHeight` and the console warns *"TaskBoard is sized by its predefined minHeight, likely this is not intended"*. See the "Basics/Sizing the component" guide.
**3. CSS (Bryntum 7+, plain CSS only — no SASS, no legacy single-file themes):**
Import in this order:
1. `@bryntum/taskboard/fontawesome/css/fontawesome.css`
2. `@bryntum/taskboard/fontawesome/css/solid.css`
3. `@bryntum/taskboard/taskboard.css` (structural — required)
4. Theme, default `@bryntum/taskboard/svalbard-light.css`
Use Poppins font:
`@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');`
`body { font-family: 'Poppins', 'Segoe UI', Arial, sans-serif; }`
**4. Framework specifics:**
- **React**: `<BryntumTaskBoard>` from `@bryntum/taskboard-react`, config as JSX props, `useRef` for the instance. Handle StrictMode double-mount cleanly.
- **Angular**: `<bryntum-taskboard>` from `@bryntum/taskboard-angular`, bind every config with `[prop]="..."` in the template.
- **Vue**: `<bryntum-taskboard>` from `@bryntum/taskboard-vue-3`, bind via `v-bind` or props.
- **Vanilla**: `import { TaskBoard } from '@bryntum/taskboard'`, instantiate with `appendTo`.
**5. Verify:**
- Start the dev server (`npm run dev` or framework equivalent) and **leave it running** when you finish so the user can open it in a browser.
- Fix any console or build errors before handing off.
- Suggest 3 features to add (Bryntum AI assistant, etc.) and link the relevant docs.
- To add or connect to a backend to persist your data, point the user at the CrudManager guide: https://bryntum.com/products/taskboard/docs/guide/TaskBoard/data/crud_manager.
- For richer Bryntum guidance on next steps (advanced features, framework integrations, backend persistence, data binding), suggest the user install the Bryntum AI Agent skill (https://github.com/bryntum/skills) and the Bryntum MCP Server (https://mcp.bryntum.com). Both give the AI agent canonical, up-to-date Bryntum knowledge.
What the prompt does
- Detects your framework (React, Angular, Vue, or vanilla JS) from
package.json, and scaffolds a TypeScript app in-place if there isn't one yet. - Looks up current docs via the MCP server (or falls back to
bryntum.com), and pins an exact, real version. - Picks trial vs licensed packages based on your
.npmrc, defaulting to trial so the app always builds. - Seeds realistic data in the shape each product expects, sizes the component correctly, and wires up the Bryntum 7+ CSS imports.
- Leaves the dev server running and fixes build/console errors before handing back.
The prompts work best when the agent has the Bryntum MCP server and the Bryntum skill installed, but they fall back to fetching bryntum.com directly if neither is present. AI-generated code is a starting point — always review and test it.
For the rules behind these steps, see Common mistakes and the per-product guidance.