Running it locally
Each repository runs on its own. Change into the sub-repo first - never run these from the workspace parent.
Backend (NexisOmni)
Section titled “Backend (NexisOmni)”Requires the .NET 10 SDK and Docker Desktop (for PostgreSQL).
dotnet tool restore # once: restores the pinned dotnet-efdocker compose up -d # PostgreSQL (central + tenant DBs) on :5432dotnet build NexisOmni.slnx # build alldotnet test NexisOmni.slnx # xUnit tests (Postgres-backed ones skip if Docker is absent)dotnet run --project src/NexisOmni.Api --launch-profile http # API on http://localhost:5089 (https -> :7298)Run a single test by name:
dotnet test --filter "FullyQualifiedName~<substring>"First-time database setup (migrations, the sample tenant, and the demo user) is in the backend’s own docs/developer-guide.md. Central and tenant migrations target different EF contexts and output folders - follow that guide exactly.
Web (nexis-omni-web)
Section titled “Web (nexis-omni-web)”Requires Node >= 20 and pnpm 10 (corepack enable).
pnpm installpnpm dev # all apps via Turborepo; or: pnpm -F hq-dashboard devpnpm typecheck # tsc --noEmit across packagespnpm test # vitestpnpm check # Biome format + lint + Tailwind class-sort, with --writepnpm check:ci # what CI enforces, no writesRun a single web test file:
pnpm -F <app-or-pkg> exec vitest run <path>POS (nexis-omni-pos)
Section titled “POS (nexis-omni-pos)”A Flutter app for Android and Windows. It is offline-first: it runs against its own local database and syncs to the backend when it can reach it. See the POS docs for the sync model.