Skip to content

timing71/web

Repository files navigation

Timing71 website

AGPL v3.0 GitHub Workflow Status Netlify Status Twitter Follow

This repo hosts the source code for the Timing71 website.

Timing71 is a web-based motorsport live timing aggregation and analysis suite, allowing users to view live timing with an enhanced display and real-time strategy analysis, as well as offering post-event replays and analysis.

Development quick-start

Requires node v16 or greater.

  yarn install
  yarn run start

To run tests:

  yarn run test

IP note

This repo does not contain any code relating to acquisition of data from specific timing providers (Services in Timing71 parlance). Builds of this repo that do not include the private @timing71/services package will therefore not include the full feature set of Timing71 and not be able to process live timing from upstream providers.

Adding a new service provider

The code that interfaces with upstream timing providers should inherit from the Service base class:

import { Service } from '@timing71/common';

class SomeTimingCompanyService extends Service {
  constructor(onStateUpdate, onManifestUpdate, service) {
    super(onStateUpdate, onManifestUpdate, service);
    // whatever additional setup needs to happen
  }

  start(connectionService) {
    // Begin collecting data - connectionService provides a `fetch` method as
    // well as `createWebsocket`
  }

  stop() {
    // perform any cleanup here
  }
}

For convenience, @timing71/common also provides an HTTPPollingService base class for services relying on polling an HTTP URL for data.