md² documentation

Development setup

Layout

Folder What it is
app/ React + Vite web UI. TypeScript.
desktop/ Electron host: file system, Git, action runner, agents, remote control. JavaScript.
shared/ Logic and types used by both, as .mjs with .d.mts declarations.
design/ md²’s own cards, architecture notes, and release folders.
docs/ This documentation.

app and desktop each have their own package.json; the root package.json wires up the common workflows.

Prerequisites

Install

npm run install:all

Run

npm run dev

Starts the Vite dev server for app and, once it responds, launches the Electron shell against it. Run halves separately with npm run dev:app or npm run dev:desktop.

Test and check

Each subproject is standalone:

cd app
npm run lint
npm run typecheck
npm run test
cd desktop
npm run lint
npm run test

Use npm run typecheck (tsc --noEmit) for type errors — npm run build also bundles and is slower for the same answer. Tests run under Vitest.

Package

npm run build:windows

Builds the React app, packages the Electron shell with electron-builder, and verifies the artifacts in release/. Signing configuration and the pre-release checklist are in desktop/packaging/BUILDING_WINDOWS.md.

Optional environment

app/.env.example and desktop/.env.example list optional Sentry and Aptabase keys for error reporting and usage counts. Copy to .env if you want them locally. Neither is required to build or run.

See also: Architecture.