FixPortalDocsSimulator
Browse documentation

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.slnx
dotnet run --project src/FixPortal.Simulator.WebApi

The 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-scripts
npm run dev

Vite 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 --noEmit
npx eslint .
npx vitest run
npx vite build

Use npm run build when validating content, contract generation, prerendering, sitemap, RSS, or search output end to end.

Updated 2026-09-08 · Edit on GitHub