This guide covers building Mapset Verifier locally, packaging sidecar binaries, and how the project is structured.
For release automation and tagging, see RELEASES.md. For custom check plugins, see CUSTOM_CHECKS.md.
You will need:
- .NET SDK 9
- Node.js (LTS recommended)
The launcher scripts build the backend sidecar if needed, install npm dependencies, start the .NET server, and run the Electron frontend in dev mode.
From the repository root:
scripts\start.batchmod +x scripts/start.sh
./scripts/start.shFrom the repository root:
| Command | Description |
|---|---|
npm run dev:all |
Vite dev server + Electron + backend (Debug build) |
npm run dev |
Frontend + Electron only (backend must be running separately) |
npm run build:backend |
Build the .NET backend (Debug) |
npm run build |
Production frontend build |
npm run dist |
Windows x64 installer (local, no publish) |
npm run dist-all |
Windows + Linux installers (local, no publish) |
Install dependencies first:
npm ci
npm --prefix electron-app ciSidecar binaries are laid out under bin/server/dist/<runtime>/ and bundled into the Electron app via extraResources.
scripts\build-sidecars.bat <runtimes>scripts/build-sidecars.sh <runtimes>Available runtimes:
win-x64win-arm64mac-x64mac-arm64linux-x64linux-arm64
MV 2.0 is an Electron desktop app with a React + TypeScript frontend (Vite, Mantine) under electron-app/.
The backend is a .NET 9 ASP.NET Core sidecar (src/MapsetVerifier.csproj) spawned by Electron on startup. The UI talks to the backend over HTTP; real-time updates use SignalR.
Check logic lives in MapsetVerifier.Checks/ on top of MapsetVerifier.Framework/ and MapsetVerifier.Parser/. Built-in check metadata is exported for the frontend via MapsetVerifier.Exports/.
Packaged builds place platform-specific backend binaries in resources/bin/server/dist/<rid>/ inside the app bundle.
Warning
This section describes the old 1.x architecture and is outdated. MV 2.0 replaced the jQuery frontend with React/TypeScript, retargeted the backend to .NET 9, and reworked how checks and plugins are loaded. Keep this here only as historical context for the 1.x release line.
The backend was written in C#/.NET, with a simple ASP.NET Core server. The frontend was an Electron desktop application written in HTML, CSS, and JS/jQuery. The server-client communication was done with SignalR. Upon selecting a mapset, the frontend requested tabs to be rendered, and the backend returned HTML.
Custom check plugins for 1.x used a different folder layout (checks instead of CustomChecks) and targeted .NET Core 3.1. See CUSTOM_CHECKS.md for migration notes.
