Skip to content

T-WDXJ-sdf-scaffold-tauri-nuxt-app

Status: closed/done · Impact: high · Complexity: large

Stand up apps/sdf — the SDF operator app decided in D-0018-sdf-control-plane-app — as a first-class monorepo citizen by replaying the proven pumice conversion recipe over template-tauri-nuxt. Unblocks every later SDF phase.

LocationRole today
apps/dashboard, family, polish, pumice, sdlc — no sdf
Cargo.tomlroot workspace: packages/rust/*, family products, pumice crates/src-tauri
.moon/tasks/tauri.ymlinherited task surface for tags: ['tauri'] projects
apps/pumice/moon.ymlthe documented conversion precedent (mergeArgs, noop test aggregate, server preset)

The template lives outside the repo at /Users/sksizer/Developer/templates/template-tauri-nuxt (github sksizer/template-tauri-nuxt); scaffold from a fresh checkout of its origin/main (local clone was behind at review time).

apps/sdf/ exists with peer src-tauri/ (Rust crate sdf, member of the root cargo workspace, workspace-pinned deps) and src-nuxt/ (Nuxt 4, Bun, own apps/sdf/bun.lock), a thin moon.yml (tags: ['tauri'], language: 'rust'), lefthook/justfile hooks rewritten pnpm→bun, a workflow_dispatch CI workflow, and all inherited moon gates green. No pnpm lockfiles anywhere under apps/sdf.

  1. Copy template checkout into apps/sdf (drop .git, Makefile, template-fleet scripts not applicable in-monorepo); run rename.sh with PROJECT_NAME=sdf, BUNDLE_ID=com.sksizer.sdf.
  2. Bun-ify per pumice (T-M7QX precedent): app-level workspaces (src-nuxt), delete pnpm lockfiles, bun installapps/sdf/bun.lock, rewrite pnpm runbun run in package.json/justfile/lefthook.yml, trustedDependencies as pumice.
  3. moon.yml per pumice: layer: application, stack: frontend, language: rust, tags: ['tauri']; declare dev (server preset) and build; override fmt/fmt-check/lint/backend-test with --manifest-path src-tauri/Cargo.toml + mergeArgs: 'replace'.
  4. Add apps/sdf/src-tauri to root Cargo.toml members; consume { workspace = true } pins (tauri 2); remove per-app Cargo.lock and rust-toolchain.toml in favor of workspace stable.
  5. CI: .github/workflows/sdf-ci.yml modeled on pumice-ci.yml (ubuntu-22.04, webkit apt deps, workflow_dispatch).
  6. Verify: moon run sdf:check, cargo check -p sdf, cd apps/sdf/src-nuxt && bun run generate, bun run tauri build --debug locally.
LocationKindChange
apps/sdf/newfull app tree from template (src-tauri, src-nuxt, justfile, lefthook.yml, mise.toml, sdlc.yaml, moon.yml)
Cargo.tomlmodifyadd apps/sdf/src-tauri to workspace members
.github/workflows/sdf-ci.ymlnewworkflow_dispatch CI per pumice-ci.yml
  • AC-1: moon run sdf:check exits 0 (inherited tauri aspect: frontend lint/typecheck/test/format-check + rust fmt-check/lint).
  • AC-2: cargo check -p sdf builds under the root workspace (single root Cargo.lock; no apps/sdf/**/Cargo.lock).
  • AC-3: bun run generate in src-nuxt emits the static SPA to .output/public (browser mode artifact); bun run tauri build --debug produces a launchable desktop binary locally.
  • AC-4: no pnpm/npm lockfiles under apps/sdf; git grep -l pnpm -- apps/sdf returns only doc mentions, no executable hooks/scripts.
  • AC-5: moon auto-registers project id sdf (moon query projects lists it) with zero .moon/workspace.yml edits.
  • Any dashboard views or data fetching (T-6S37).
  • ontogen codegen pipeline (T-UBPG).
  • Deleting apps/dashboard (T-QT7X).
  • Re-enabling always-on Tauri CI (repo-wide stance, PRs #759/#763).
  • none (first code phase of M-5EEX; lands stacked on the D-0018 docs PR)

← Back to Tasks