Local development (Windows)
| Part | Platform |
|---|---|
| Backend | Windows |
| EuroScope plugin | Windows x86 (Win32) — MSVC |
| Frontend | Windows, Linux & Mac |
| Docs | Windows, Linux & Mac |
Host requirements
Section titled “Host requirements”| Requirement | Used for | Notes |
|---|---|---|
| Docker Desktop | Backend | Compose for Postgres, migrator, optional full API image |
| Go | Backend | Version per backend/go.mod; host go run when DB runs in Docker |
| Node.js 22.x | Frontend, docs | Locked in frontend/package.json engines |
| Git | Repo | Standard clone/submodule workflow |
| Visual Studio 2022 or Build Tools (C++ workload) | EuroScope plugin | MSVC for Win32 |
| CMake ≥ 3.15 | EuroScope plugin | Configure step |
| Ninja | EuroScope plugin | Generator 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.
Backend
Section titled “Backend”From backend/, bring up the full stack (API on 8090, Postgres, migrator, Aspire dashboard):
docker compose --profile all up --build -dFor API work on the host binary, run only Postgres (and the one-shot migrator via compose):
docker compose --profile database up --build -dPoint DATABASE_CONNECTIONSTRING at localhost:5432 (see .env / Readme.md), then from backend/:
go run ./cmd/serverThe HTTP/WebSocket surface matches what the frontend and plugin expect on 8090 in dev.
Frontend
Section titled “Frontend”From frontend/:
npm cinpm run devVite loads public/config.js; default wsUrl is ws://localhost:8090/frontEndEvents. Change it if the API listens elsewhere.
EuroScope plugin
Section titled “EuroScope plugin”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:
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja -B buildcmake --build buildSwap 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/:
npm cinpm run devWiring checks
Section titled “Wiring checks”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.