An OWD app is a publishable Nuxt module. When listed in desktop.config.ts → apps, it registers desktop programs: launcher entries, window models, and commands. Apps do not replace the client — they plug into it.
| Concept | Role |
|---|---|
Nuxt module (defineNuxtModule) | Adds components, plugins, Tailwind paths, optional runtimeConfig. |
| Runtime plugin | Client-only plugin named owd-<slug>-register calls defineDesktopApp(...) with the app configuration. |
ApplicationConfig | Stable id, title, icons, windows (models), entries (menu items), commands (actions). |
Build (@nuxt/module-builder) | Outputs dist/module.mjs consumed by the desktop like any other Nuxt module. |
| Repo | Why study it |
|---|---|
app-about | Minimal complete app — singleton window, configKey, playground launch plugin. |
app-todo | Multi-window app, launch plugin pattern. |
client validate fixture | Smallest valid module checked by desktop validate. |
@owdproject/core as a peer and its public APIs.Follow this order for a first app:
package.json exports.module.ts, app.config.ts, Tailwind.ApplicationConfig details.prepack, npm, validation.Also see desktop.config.ts and Package linking.