Overview

Project structure

Client monorepo, desktop project, app and theme packages.

Client monorepo

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.

Your desktop project

PathRole
nuxt.config.tsmodules: ['@owdproject/core']; all normal Nuxt options here
desktop.config.tsdefineDesktopConfig({ theme, apps, modules, … })
app/app.vue<Desktop /> from the active theme

Core requires desktop.config.ts at the Nuxt root.

App package

@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

Theme package

@owdproject/my-theme/
├── src/module.ts            # defu → runtimeConfig.public.desktop
└── src/runtime/components/
    ├── Desktop.vue          # entry: wraps DesktopCore
    ├── Window.vue
    └── …

Theme anatomy · Create from scratch