Local development setup
Clone fixportal-simulator-frontend and fixportal-simulator-backend as siblings. Local development defaults to disabled authentication and requires a local SQL Server for persisted simulator state.
Backend
Install the .NET 10 SDK. On Windows, the development connection uses LocalDB and creates SimulatorDev through EF Core migrations. Other platforms can run SQL Server 2022 in a container and override Simulator__Db__ConnectionString.
dotnet restore FixPortal.Simulator.slnxdotnet run --project src/FixPortal.Simulator.WebApiThe Development profile starts FixPortal.Simulator.WebApi, the ASP.NET Core REST and SignalR host, at http://localhost:52731 and https://localhost:52728. Vite targets the HTTP endpoint. When authentication is disabled, the API also seeds a development tenant and user.
Frontend
Install Node.js 22.22.3, the version pinned in CI. Earlier Node 22 releases are not the supported local runtime.
The checked-in .npmrc resolves @fixportal/design from GitHub Packages. Authenticate npm with permission to read that package before installing if your existing npm credentials do not already have access. CI supplies NODE_AUTH_TOKEN from GitHub Actions; do not add a token to the repository.
npm ci --ignore-scriptsnpm run devVite serves http://localhost:5173 and proxies /api, including SignalR at /api/hub/*, to the local backend at http://localhost:52731. The /api/demo route is the exception: it targets the hosted demo backend. Authentication is disabled by default; copy .env.example only when you need Entra settings.
Generated inputs
npm run build regenerates theme text defaults, REST type declarations, content indexes, the TypeScript contract snapshot, prerendered pages, sitemap, RSS, and Pagefind output. Never hand-edit src/api/generated/.
Land a backend contract change first. Then copy the REST and SignalR snapshots into this repository and run npm run generate:rest-types. Run npm run snapshot-types after changing a supported type in src/api/types.ts, then validate that snapshot at the backend parity seam. src/api/signalrContract.test.ts checks the hand-maintained event payload types.
Local gate
Run all four checks before pushing:
npx tsc -b --noEmitnpx eslint .npx vitest runnpx vite buildUse npm run build when validating content, contract generation, prerendering, sitemap, RSS, or search output end to end.
Updated 2026-09-08 · Edit on GitHub