Skip to main content

Third-party software and services

Scope

This page records the significant external software and operated services used by the current Wits World repository, their purpose, and the repository-backed reason for each selection. It is intentionally a curated architectural record, not a copy of package-lock.json or a claim that every transitive package was selected individually by the team.

Exact installed package versions remain pinned in the workspace manifests and lockfile. Operational configuration, credentials, licences, quotas, and live acceptance remain separate from selecting a dependency.

Application and data software

SoftwareCurrent purposeWhy it fits Wits World
React and React DOMComponent model and rendering for the player and Author interfacesReusable components support the multiple authenticated journeys and their loading, error, and responsive states without combining browser presentation with server authority.
ViteWeb development server and production browser buildProvides a focused React/TypeScript build and an explicit boundary where only VITE_* values become browser-visible.
WouterClient-side routingSupplies the small SPA routing layer used for public, authenticated player, match, and Author routes.
FastifyHand-written TypeScript HTTP APISupports explicit plugins and routes, runtime schema validation, structured logging, request injection for tests, and independent deployment from the Web.
@fastify/swagger and @fastify/swagger-uiRuntime OpenAPI 3.0.3 generation and an interactive public referenceKeeps the machine-readable contract connected to the schemas that validate actual routes instead of maintaining a separate endpoint catalogue.
@fastify/corsExact-origin browser-to-API policyMakes the separate Web/API deployment boundary explicit while leaving authentication to bearer-token validation.
joseJWT signature and claim verificationImplements standards-based Auth0 access-token validation against the configured issuer, audience, expiry, algorithm, and key set without custom cryptography.
pgPostgreSQL connection pooling, transactions, and parameterised SQLGives the API explicit control over SQL, locks, transaction boundaries, and PostGIS queries. The repository does not use an ORM or generated backend API.
PostgreSQL and PostGISAuthoritative relational, transactional, and geospatial data layerPostgreSQL supplies constraints, indexes, transactions, and concurrency controls; PostGIS supplies server-side WGS 84 point storage and metre-based distance calculations. ADR-003 records the decision and alternatives.
Mapbox GL JS and Mapbox StandardInteractive campus-map presentationSupplies the implemented 3D-capable basemap, styles, controls, and attribution behind a provider boundary. It is a confirmed team-selected integration within the project's technology discretion and remains visual only, with an accessible event list and PostGIS authority. Licensing, token/privacy, usage/cost, and campus-data evidence remains operational.
Auth0 React SDKBrowser authentication integrationUses an established SPA provider flow rather than custom password handling. The API validates access tokens independently. ADR-005 records the provider comparison and decision.
DocusaurusStatic public documentation applicationPublishes version-controlled Markdown/MDX with curated navigation, stable routes, search-engine-readable pages, and broken-link failure during builds.

The repository also contains two first-party workspace packages: @wits-world/account-policy for shared Player Name rules and @wits-world/game-rules for pure battle transitions. They are project code, not third-party dependencies, but separating them prevents duplicate policy implementations across applications.

Engineering and quality tooling

ToolCurrent purposeMotivation
TypeScriptStatic checking across applications and shared packagesMakes application, service, and client contracts explicit while retaining runtime validation for untrusted input.
Vitest and V8 coverageUnit, component, route/service, and database test execution plus Web/API coverage reportsFits the TypeScript/Vite ecosystem and supports focused suites without requiring a listener for Fastify route tests.
React Testing Library, user-event, jsdom, and DOM matchersWeb component behaviour and semantic interaction testsEncourages testing visible behaviour, accessible names, keyboard actions, and focus outcomes rather than component internals.
PlaywrightReal-browser E2E and focused responsive, touch, keyboard, authentication, and journey checksCovers behaviour that jsdom cannot reliably establish and supports the deterministic integrated Basic release journey.
ESLint, typescript-eslint, and PrettierStatic quality rules and repository formattingProvides repeatable local and CI checks across the monorepo.
WranglerCloudflare Pages documentation deploymentProvides the current scripted deployment path for the generated Docusaurus build.

No axe-core dependency or automated axe scan exists in the current repository. Accessibility evidence currently comes from semantic/component tests, focused browser checks, and required manual evaluation as documented in the testing strategy.

Operated services

ServiceCurrent purposeSelection and operational boundary
Auth0Hosted registration/sign-in, token issuance, custom production issuer, and account-management APIs used by backend lifecycle workAvoids custom password storage and supports SPA plus API token flows. Tenant settings, callbacks, DNS, email policy, Management API credentials, and live behaviour require operator evidence.
MapboxHosts the Standard style and browser map resourcesProvides the implemented map presentation. Public tokens must be URL/scoped, attribution must remain, usage/licensing must be reviewed, and reported player location is not sent to Mapbox.
NeonManaged PostgreSQL/PostGIS for separate development, test, and production targetsProvides the required managed PostGIS-capable database. The API still owns migrations and SQL; backup, restore, inactivity, quota, and plan guarantees depend on operator/provider evidence.
Azure App ServiceIndependent Linux hosting for the Web and APIMatches the separate-application architecture and current Gitea artifact deployment. App Service settings hold API runtime secrets; managed identity limits deployment access.
Cloudflare PagesPublic static hosting for DocusaurusSupports the separately deployed, account-free documentation site through a path-filtered workflow.
Wits SDP Gitea and ActionsGit hosting, backlog/issues, pull requests, reviews, CI artifacts, and delivery automationKeeps project-methodology evidence and code review connected to Git while providing repository and host runner labels for validation and deployment.

Selection and review rule

A significant new dependency or service should have a concrete repository need, an identified authority and data boundary, a licence/cost/security review proportionate to its role, an operational owner, tests or failure handling, and documentation in the natural architecture or operations section. A package is not justified merely because it is popular, and a deployed service is not accepted merely because the code can connect to it.

The technology stack explains the overall stack, while external integration boundaries records the data flows and evidence limits. Provider-specific details remain in their ADRs and runbooks so this page does not duplicate volatile configuration.

AI declaration

This curated third-party record was generated, edited, and reviewed with the assistance of Codex[GPT-5]. Package and service claims were checked against the current manifests, workflows, source, and existing operational documentation.