Development

Repository structure

Where the frontend, Rust backend, data files, and documentation live.

The repositories are separate and have different stacks. The desktop repository contains the application; the website repository contains this site and its structured project data.

Desktop application

src/                     Vanilla HTML, CSS, and ES modules
  app.js                 Bootstrap, router wiring, page lifecycle
  components/            Persistent shell and reusable UI
  pages/                 Dashboard, machines, storage, media, settings
  services/              Tauri command wrappers and preferences
  state/                 Shared host and machine state
  styles/                Tokens, layout, components, and page styles
  vendor/novnc/          Bundled noVNC client and licenses
  assets/brand/          Local Wave VM brand SVGs
src-tauri/src/
  commands/              Narrow Tauri command handlers
  config/                Versioned configuration and atomic persistence
  host/                  Host diagnostics, memory/storage, KVM probe
  qemu/                  Executable discovery, safe version probing
  qmp/                   QMP client over a private Unix socket
  vm/                    VM models, validation, disk creation, lifecycle
  error.rs               Shared serialized application errors
  state.rs               Application state and tracked QEMU processes
src-tauri/capabilities/  Tauri capability scope
src-tauri/tauri.conf.json Window, CSP, bundle, and icon configuration

Website

src/app/                 Next.js App Router pages and layouts
src/components/          Shared header, footer, page, docs, and roadmap UI
src/data/                Roadmap, feature, documentation, and status data
src/assets/              Local Wave VM brand SVGs
src/app/globals.css      Global tokens and reset
next.config.mjs          Next.js configuration
package.json             Scripts and dependencies

The website's roadmap, feature, and documentation navigation are driven by structured data files. Status text should be updated at the source rather than copied into multiple pages.

Build output

The desktop release binary is written under src-tauri/target/release/. The website production build is written under .next/. Both are generated artifacts and are ignored by version control.

Independence

The website does not import desktop source files or read the desktop repository at build time. The desktop application does not read the website repository. Brand assets are copied into each project rather than linked across repositories.

Continue with Build and checks.