description: Build your own editor shell with provideEditor, CanvasRoot, menus, panels, and toolbars.
---
# Custom Editor Shell
A typical OpenPencil Vue app has three layers:
1.`@open-pencil/core` creates the editor
2.`@open-pencil/vue` adapts it into Vue composables and headless primitives
3. your app renders the shell, styling, and product UX
## Why this matters
The built-in OpenPencil app is only one possible shell.
You can build a very different one for a focused workflow: an embedded editor inside another product, an internal asset tool, a template editor, an annotation UI, or an AI-assisted editing surface with custom controls.
The fixed viewport dimensions above keep the example short. In a resizable shell, return the actual canvas container size from `getViewportSize`; do not include the surrounding sidebars or toolbar. See [SDK Getting Started](../getting-started) for installation requirements and migration notes.