Bitrix24 Nuxt Dashboard Template
A Nuxt 4 dashboard that ships as a browser-based Bitrix24 application. It works
standalone on mock data and, once embedded in Bitrix24, reads CRM data
through the B24 Frame SDK. Every screen is composed from
@bitrix24/b24ui-nuxt components and
@bitrix24/b24icons-vue icons, and every
visible string is localized across 19 locales.
Component API reference
This skill teaches how to build within this template. For the API of a
specific b24ui component (props, slots, events), use the Bitrix24 UI docs:
https://bitrix24.github.io/b24ui/llms.txt (skill b24-ui-nuxt). If it is not
configured, add it.
First step — pick the integration target
Before any feature work, ask the user how the app talks to Bitrix24 and set the
project up accordingly. This is the #1 convenience goal of the template — a
Vibecoding user should never have to rip out the SDK by hand.
If the user hasn't said, ask — don't assume.
Core rules (always apply)
- Semantic colors only. Use b24ui tokens (
text-description, bg-elevated,
border-muted, air-primary, …) — never raw Tailwind palette
(text-gray-500, bg-blue-600). This is a hard requirement inherited from
b24ui; see conventions.
- No hard-coded user-facing strings. Everything goes through i18n. Add keys
to
i18n/locales/en.json (the source of truth) first. See
i18n.
- All B24 access through
useB24(). Never new B24Frame() in a component.
See b24-integration.
- Keep pages thin. Feature UI lives in
app/components/<feature>/, data in
app/composables/ or server/api/. See architecture.
- Mock first. New data must render standalone (mock) before it reads real
CRM data. See data-layer.
How to use this skill
Load only the references the task needs — don't read everything.
Reference files
Guidelines — the requirements and patterns:
- architecture — stack, layers, data flow, where things live
- conventions — Vue/TS/ESLint conventions, b24ui usage requirements, semantic colors, icons
- i18n — locale files, keys,
useI18n, mirroring locales
- b24-integration —
useB24, B24Frame, jssdk, scopes, install flow
Recipes — step-by-step for common tasks:
- setup-target — do this first: configure the project for Vibecoding (remove JS SDK) or REST API (keep SDK)
- add-page — new route + sidebar entry + command palette + shortcut + i18n
- data-layer — mock endpoint → real B24 CRM data via a
useDealStats-style composable
Routing table
| Task |
Load these references |
| First contact / project setup for a target |
setup-target |
| Understand the project before changing anything |
architecture |
| Add a new page / route |
conventions, i18n, add-page |
| Build or edit a feature component |
conventions, architecture |
| Add / change data (mock or CRM) |
architecture, b24-integration, data-layer |
| Add or change any visible text |
i18n |
| Wire something to Bitrix24 CRM |
b24-integration, data-layer |
Known work / TODO
See AGENTS.md → "Known Work / TODO" for the live list. In short: a localization
pass across all pages is pending; and an AI anonymized feedback loop is under
development (delivery item, spec TBD). app/pages/install.vue now implements a
client-only install flow (its placement/userFields handlers are demo bindings).
Before you finish
Last reviewed: 2026-07-05.
1---2name: b24-dashboard-template3description: Work on the Bitrix24 Nuxt Dashboard Template — a starter B24 app built with @bitrix24/b24ui-nuxt, running on mock data standalone and on CRM data when embedded in Bitrix24. Use when adding pages, components, composables, mock/real data, or localized strings to this template.4---56# Bitrix24 Nuxt Dashboard Template78A Nuxt 4 dashboard that ships as a browser-based Bitrix24 application. It works9**standalone on mock data** and, once embedded in Bitrix24, reads CRM data10through the B24 Frame SDK. Every screen is composed from11[`@bitrix24/b24ui-nuxt`](https://bitrix24.github.io/b24ui/) components and12[`@bitrix24/b24icons-vue`](https://bitrix24.github.io/b24icons/) icons, and every13visible string is localized across 19 locales.1415## Component API reference1617This skill teaches **how to build within this template**. For the API of a18specific b24ui component (props, slots, events), use the Bitrix24 UI docs:19<https://bitrix24.github.io/b24ui/llms.txt> (skill `b24-ui-nuxt`). If it is not20configured, add it.2122## First step — pick the integration target2324Before any feature work, ask the user **how the app talks to Bitrix24** and set the25project up accordingly. This is the #1 convenience goal of the template — a26Vibecoding user should never have to rip out the SDK by hand.2728- **Bitrix24 Vibecoding** → run the removal procedure in29 [recipes/setup-target.md](references/recipes/setup-target.md#vibecoding) first30 (strips `@bitrix24/b24jssdk` + `-nuxt`), then build on mock data and use31 <https://vibecode.bitrix24.tech/llms.txt>.32- **REST API** → keep the SDK; follow33 [recipes/setup-target.md](references/recipes/setup-target.md#rest-api), use the34 [JS SDK docs](https://bitrix24.github.io/b24jssdk/llms.txt), and recommend the35 [REST API MCP Server](https://apidocs.bitrix24.com/ai-tools/mcp.html).3637If the user hasn't said, **ask** — don't assume.3839## Core rules (always apply)40411. **Semantic colors only.** Use b24ui tokens (`text-description`, `bg-elevated`,42 `border-muted`, `air-primary`, …) — never raw Tailwind palette43 (`text-gray-500`, `bg-blue-600`). This is a hard requirement inherited from44 b24ui; see [conventions](references/guidelines/conventions.md).452. **No hard-coded user-facing strings.** Everything goes through i18n. Add keys46 to `i18n/locales/en.json` (the source of truth) first. See47 [i18n](references/guidelines/i18n.md).483. **All B24 access through `useB24()`.** Never `new B24Frame()` in a component.49 See [b24-integration](references/guidelines/b24-integration.md).504. **Keep pages thin.** Feature UI lives in `app/components/<feature>/`, data in51 `app/composables/` or `server/api/`. See [architecture](references/architecture.md).525. **Mock first.** New data must render standalone (mock) before it reads real53 CRM data. See [data-layer](references/recipes/data-layer.md).5455## How to use this skill5657Load only the references the task needs — don't read everything.5859### Reference files6061**Guidelines** — the requirements and patterns:62- [architecture](references/architecture.md) — stack, layers, data flow, where things live63- [conventions](references/guidelines/conventions.md) — Vue/TS/ESLint conventions, b24ui usage requirements, semantic colors, icons64- [i18n](references/guidelines/i18n.md) — locale files, keys, `useI18n`, mirroring locales65- [b24-integration](references/guidelines/b24-integration.md) — `useB24`, `B24Frame`, jssdk, scopes, install flow6667**Recipes** — step-by-step for common tasks:68- [setup-target](references/recipes/setup-target.md) — **do this first**: configure the project for Vibecoding (remove JS SDK) or REST API (keep SDK)69- [add-page](references/recipes/add-page.md) — new route + sidebar entry + command palette + shortcut + i18n70- [data-layer](references/recipes/data-layer.md) — mock endpoint → real B24 CRM data via a `useDealStats`-style composable7172### Routing table7374| Task | Load these references |75|---|---|76| **First contact / project setup for a target** | setup-target |77| Understand the project before changing anything | architecture |78| Add a new page / route | conventions, i18n, add-page |79| Build or edit a feature component | conventions, architecture |80| Add / change data (mock or CRM) | architecture, b24-integration, data-layer |81| Add or change any visible text | i18n |82| Wire something to Bitrix24 CRM | b24-integration, data-layer |8384## Known work / TODO8586See `AGENTS.md` → "Known Work / TODO" for the live list. In short: a **localization87pass** across all pages is pending; and an **AI anonymized feedback loop** is under88development (delivery item, spec TBD). `app/pages/install.vue` now implements a89client-only install flow (its placement/userFields handlers are demo bindings).9091## Before you finish9293- [ ] `pnpm lint` passes (`pnpm lint --fix` to autofix stylistic rules)94- [ ] `pnpm typecheck` passes95- [ ] No hard-coded user-facing strings — keys added to `i18n/locales/en.json`96- [ ] No raw Tailwind palette colors — semantic tokens only97- [ ] New data renders standalone on mock data9899---100101_Last reviewed: 2026-07-05._