client/
├── desktop/ # Runnable Nuxt desktop
│ ├── nuxt.config.ts
│ ├── desktop.config.ts
│ └── app/app.vue # <Desktop />
├── packages/
│ ├── core/ # @owdproject/core + desktop CLI
│ └── nx/ # @owdproject/nx
├── themes/ # gitignored clones for workspace dev
├── apps/ # gitignored clones for workspace dev
├── template/ # npm create owd scaffold (desktop template)
└── docs/ # This documentation site
Extension modules (module-fs, module-persistence) and kits (kit-primevue) are developed under extend/packages/ or loaded from npm.
| Path | Role |
|---|---|
nuxt.config.ts | modules: ['@owdproject/core']; all normal Nuxt options here |
desktop.config.ts | defineDesktopConfig({ theme, apps, modules, … }) |
app/app.vue | <Desktop /> from the active theme |
Core requires desktop.config.ts at the Nuxt root.
@owdproject/my-app/
├── src/module.ts
├── src/runtime/
│ ├── plugin.ts # defineDesktopApp(...)
│ ├── app.config.ts
│ └── components/Window/
├── playground/
└── dist/module.mjs # after prepack
Package layout · Create from scratch
@owdproject/my-theme/
├── src/module.ts # defu → runtimeConfig.public.desktop
└── src/runtime/components/
├── Desktop.vue # entry: wraps DesktopCore
├── Window.vue
└── …