From the app package root:
pnpm run prepack
# or, for stub during development:
pnpm run dev:prepare
prepack runs nuxt-module-build build → dist/module.mjs + types.dev:prepare — stub + playground nuxt prepare for daily dev.files: typically ["dist"] (or ["dist", "src"] if you ship development exports — match your theme/app convention).README: install via desktop add my-app, peerDependencies on @owdproject/core, minimal desktop.config.ts snippet.playground/ launch plugins — they are dev-only.Follow SemVer. Breaking changes to public module exports or ApplicationConfig → major bump + changelog.
// desktop/package.json
"@owdproject/my-app": "workspace:*"
// desktop.config.ts
apps: ['@owdproject/my-app']
After editing app source:
pnpm run prepare:apps # or app’s dev:prepare
pnpm run dev
Standalone repos should use npm semver on core — see Package linking.
desktop validate .
Runs layout and migration checks before publish. Fix errors before npm publish; warnings are recommended (launch plugin, CI, window centering).
| Area | Examples |
|---|---|
| Structure | src/module.ts, src/runtime/app.config.ts, no duplicate root runtime/ |
| Plugin contract | defineDesktopApp, desktop-*-register name, server guard |
| Playground | package.json depends on your package + @owdproject/core, ssr: false |
| Launch (optional) | autoStartPlaygroundApps, no import.meta.dev guard |
| CI | client checkout overlay; avoid nypm alone with workspace:* |
Full checklist: core PLAYGROUND.md.
Tag the GitHub repository owd-apps.
Follow this checklist to build, configure, and release your OWD application.
.json files inside src/i18n/locales/. The Nuxt Module Builder does not copy JSON assets to the dist directory by default. Instead, use .ts files (e.g., en.ts) that export a default configuration:
export default {
window: {
close: "Close"
}
}
src/module.ts like this:
locales: [
{ code: 'en', file: 'locales/en.ts' }
]
@owdproject/core in peerDependencies to the latest compatible version (e.g. ^3.4.0)."workspace:*" dependencies inside playground/package.json for development. pnpm publish will automatically rewrite them to matching published versions upon release.Since the client repository ignores other apps/themes by default, the playground CI workflow must clone the parent client repository and checkout any necessary workspace packages before overlaying the module itself.
Update .github/workflows/pages.yml in your package:
jobs:
build:
runs-on: ubuntu-latest
steps:
# 1. Clone the parent client repo with recursive submodules (core, cli, nx)
- name: Checkout OWD client (workspace deps)
uses: actions/checkout@v4
with:
repository: owdproject/client
path: client
submodules: recursive
# 2. Checkout any other required workspace packages
- name: Checkout kit-tailwind
uses: actions/checkout@v4
with:
repository: owdproject/kit-tailwind
path: client/packages/kit-tailwind
- name: Checkout kit-primevue
uses: actions/checkout@v4
with:
repository: owdproject/kit-primevue
path: client/packages/kit-primevue
- name: Checkout module-fs
uses: actions/checkout@v4
with:
repository: owdproject/module-fs
path: client/packages/module-fs
# 3. Overlay the current module repository
- name: Overlay this repo
uses: actions/checkout@v4
with:
path: client/apps/app-about # adjust path depending on app/theme
# 4. Install & Generate
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm i -g --force corepack@latest && corepack enable
- name: Install monorepo dependencies
working-directory: client
run: pnpm install --no-frozen-lockfile
- name: Prepare and Generate
working-directory: client/apps/app-about
run: |
pnpm run dev:prepare
pnpm run dev:generate
env:
NUXT_APP_BASE_URL: /app-about/
pnpm --filter "@owdproject/my-app" run prepack
git add .
git commit -m "chore: release 0.1.0"
git push origin main
--access public):
pnpm --filter "@owdproject/my-app" publish --access public --no-git-checks
Every OWD application/theme should share a consistent, high-quality README format.
<p align="center">
<img width="160" height="160" src="https://avatars.githubusercontent.com/u/65117737?s=160&v=4" />
</p>
<h1 align="center">App Name</h1>
<h3 align="center">
A short one-sentence subtitle describing what this package does.
</h3>
<br />
## Overview
A paragraph describing the application, its primary features, and usage details.
[Demo](https://owdproject.github.io/app-name/) · [Documentation](https://owdproject.github.io/docs/) · [Support](https://github.com/sponsors/owdproject)
## Installation
```bash
pnpm desktop add app-name
Explain the configuration schema or properties inside desktop.config.ts:
export default defineDesktopConfig({
apps: [
'@owdproject/app-name'
]
})
This application is released under the MIT License.
---
## Related
- [Create from scratch](/apps/create-from-scratch)
- [Playground](/apps/playground)