Skip to content

Local development (Windows)

PartPlatform
BackendWindows
EuroScope pluginWindows x86 (Win32) — MSVC
FrontendWindows, Linux & Mac
DocsWindows, Linux & Mac
RequirementUsed forNotes
Docker DesktopBackendCompose for Postgres, migrator, optional full API image
GoBackendVersion per backend/go.mod; host go run when DB runs in Docker
Node.js 22.xFrontend, docsLocked in frontend/package.json engines
GitRepoStandard clone/submodule workflow
Visual Studio 2022 or Build Tools (C++ workload)EuroScope pluginMSVC for Win32
CMake ≥ 3.15EuroScope pluginConfigure step
NinjaEuroScope pluginGenerator used in CI; same as local builds

Plugin builds: the target is Win32 (x86). Open an x86 Native Tools (or equivalent) MSVC prompt before cmake / cmake --build so links match EuroScope’s 32-bit host; an x64-only toolchain will fail CMake or produce the wrong architecture.

From backend/, bring up the full stack (API on 8090, Postgres, migrator, Aspire dashboard):

Terminal window
docker compose --profile all up --build -d

For API work on the host binary, run only Postgres (and the one-shot migrator via compose):

Terminal window
docker compose --profile database up --build -d

Point DATABASE_CONNECTIONSTRING at localhost:5432 (see .env / Readme.md), then from backend/:

Terminal window
go run ./cmd/server

The HTTP/WebSocket surface matches what the frontend and plugin expect on 8090 in dev.

From frontend/:

Terminal window
npm ci
npm run dev

Vite loads public/config.js; default wsUrl is ws://localhost:8090/frontEndEvents. Change it if the API listens elsewhere.

Code lives in euroscope-plugin/. The loader target produces build/bin/FlightStripsPlugin.dll; Debug post-build copies src/config_dev.ini to build/bin/flightstrips_config.ini (dev defaults include ws://localhost:8090/euroscopeEvents). Release follows the CI layout (flightstrips_config.ini from prod config.ini, plus a flightstrips_config_dev.ini sidecar).

From euroscope-plugin/ in an x86 MSVC environment:

Terminal window
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja -B build
cmake --build build

Swap Debug for Release to mirror .github/workflows/build-plugin.yml.

Copy FlightStripsPlugin.dll and flightstrips_config.ini from build/bin/ into your sector package’s EuroScope Plugins folder (same pattern as production: %AppData%\EuroScope\<ICAO>\Plugins\, or your pack’s equivalent). Keep any EuroScope-supplied dependency DLLs beside the plugin if your install requires it. Edit flightstrips_config.ini if the API host, OIDC, or airport sections differ from your machine.

Load the DLL from EuroScope’s plugin dialog. With the backend up, the plugin should negotiate the WebSocket defined under [api] baseurl.

From docs/:

Terminal window
npm ci
npm run dev

With backend listening on 8090, frontend dev server should show live strips once Auth0 (or your dev identity setup) and WebSockets succeed. Plugin traffic is independent of the Vite origin; it only needs the backend euroscopeEvents endpoint and matching auth config in the ini file.