Giter Club home page Giter Club logo

tods-competition-factory's Introduction

CourtHive Logo

Competition Business Rules and Policy Management.

Onilne Documentation and Examples.

NPM Version Package License NPM Downloads

Competittion Business Rules

The Competition Factory is a collection of functions for transforming/mutating tournament records and is intended to ensure the integrity of Tournaments by managing all state transformations. Factory functions embody the "business rules" required by Tournament Management Solutions, and enable an entirely new way of constructing software to manage tournaments.

The rules governing the creation of draws, seeding, and participant movement can be present on a standalone client, on a server, or both. An entire tournament management solution can run in a browser, or a client can communicate with a server which utilizes a database, or simply the file system.

Server deployments support highly scaleable asynchronous processing models in Node.js.

Data Standards

The Competition Factory utilizes the Tennis Open Data Standards, (TODS), which provide a document-based representation of all of the elements of a tournament or a league including participants, events, draws, matchUps, contacts, and references to online resources. Although the data standard is emerging in the sport of Tennis, the data structures apply to tournaments in many sports.

Time Capsule

After a tournament has been completed, a TODS file can be considered a "time capsule" of all the information related to the constructrion and management of a tournament or a league. This means that complete historical data is available in one cross-platform, database-independent JSON file, removing all concerns about keeping software maintenance contracts active in order to retain access to data, as well as any reliance on applications which interpret database schemas.

State Engines

The Competition Factory includes synchronous and asynchronous "state engines" which provide services for managing the state of a tournament record as well as subscriptions, notifications and logging.

Mocks Engine

The mocksEngine generates complete tournament objects, or tournamentRecords, as well as mock persons, participants and matchUp outcomes. It is used extensively in the ~1900 tests that are run against the factory methods before every package release.

Installation

$ pnpm i tods-competition-factory

tods-competition-factory's People

Contributors

anter1994 avatar brdar avatar courthive avatar dependabot[bot] avatar renovate-bot avatar renovate[bot] avatar rodrimaia avatar sbwrege2z avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

tods-competition-factory's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

asdf
.tool-versions
  • node 20.14.0
  • pnpm 9.3.0
npm
documentation/package.json
  • @cmfcmf/docusaurus-search-local ^1.1.0
  • @docusaurus/core 2.4.3
  • @docusaurus/preset-classic 2.4.3
  • @docusaurus/theme-live-codeblock 2.4.3
  • @material-ui/core 4.12.4
  • @mdx-js/react 1.6.22
  • @types/react 18.3.3
  • clsx 2.1.1
  • courthive-components ^0.7.0
  • material-ui 0.20.2
  • mdx-mermaid 2.0.0
  • mermaid 10.9.1
  • react ^18.2.0
  • react-dom ^18.2.0
  • react-json-tree 0.19.0
  • tods-competition-factory 2.2.1
  • axios 0.28.1
package.json
  • @babel/core 7.24.7
  • @babel/plugin-transform-nullish-coalescing-operator 7.24.7
  • @babel/plugin-transform-optional-chaining 7.24.7
  • @babel/preset-env 7.24.7
  • @babel/preset-typescript 7.24.7
  • @commitlint/cli 19.3.0
  • @commitlint/config-conventional 19.2.2
  • @dep-tree/cli 0.21.1
  • @nestjs/class-transformer 0.4.0
  • @nestjs/class-validator 0.13.4
  • @nestjs/cli 10.3.2
  • @nestjs/common 10.3.9
  • @nestjs/config 3.2.2
  • @nestjs/core 10.3.9
  • @nestjs/jwt 10.2.0
  • @nestjs/platform-express 10.3.9
  • @nestjs/schematics 10.1.1
  • @nestjs/swagger 7.3.1
  • @nestjs/testing 10.3.9
  • @rollup/plugin-babel 6.0.4
  • @rollup/plugin-commonjs 26.0.1
  • @rollup/plugin-json 6.1.0
  • @rollup/plugin-node-resolve 15.2.3
  • @rollup/plugin-terser 0.4.4
  • @rollup/plugin-typescript 11.1.6
  • @swc/cli 0.3.12
  • @swc/core 1.5.29
  • @types/express 4.17.21
  • @types/jest 29.5.12
  • @types/node 20.14.2
  • @types/supertest 6.0.2
  • @typescript-eslint/eslint-plugin 7.13.0
  • @typescript-eslint/parser 7.13.0
  • @vitest/coverage-v8 1.6.0
  • @vitest/ui 1.6.0
  • agadoo ^3.0.0
  • ajv 8.16.0
  • ajv-formats 3.0.1
  • body-parser 1.20.2
  • c8 10.1.2
  • chalk 5.3.0
  • esbuild 0.21.5
  • eslint 8.57.0
  • eslint-config-prettier 9.1.0
  • eslint-import-resolver-typescript 3.6.1
  • eslint-module-utils 2.8.1
  • eslint-plugin-compat 5.0.0
  • eslint-plugin-import 2.29.1
  • eslint-plugin-prettier 5.1.3
  • eslint-plugin-sonarjs 0.25.1
  • esm 3.2.25
  • fs-extra 11.2.0
  • globals 15.4.0
  • husky 9.0.11
  • jest 29.7.0
  • lint-staged 15.2.7
  • pinst 3.0.0
  • prettier 3.3.2
  • prettier-eslint 16.3.0
  • reflect-metadata 0.2.2
  • rimraf 5.0.7
  • rollup 4.18.0
  • rollup-plugin-dts 6.1.1
  • rxjs 7.8.1
  • semver 7.6.2
  • source-map-support 0.5.21
  • supertest 7.0.0
  • ts-jest 29.1.4
  • ts-loader 9.5.1
  • ts-node 10.9.2
  • tsconfig-paths 4.2.0
  • tslib 2.6.3
  • typescript 5.4.5
  • variable-diff 2.0.2
  • vite 5.3.1
  • vite-tsconfig-paths 4.3.2
  • vitest 1.6.0
  • node >=20

  • Check this box to trigger a request for Renovate to run again on this repository

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Error type: undefined. Note: this is a nested preset so please contact the preset author if you are unable to fix it yourself.

Participants Restrictions

I am trying to use this lib to create an app (or contribute to this one) in order to have automatic scheduling that also considers Participants Restrictions.

I mean, in my city is pretty common to have tournaments where you can let the organizers know in advance your restrictions/openings. like " I can play Thursday night, Fridays on mornings, and entire Saturdays".

I can see that you have the restrictions feature when assigning Courts, but I would also like to add the option to have participants contribute with their restrictions too (and the automatic scheduling should use this information when assigning matchups (and possibly future matchups too)). Is that possible? I am willing to create a pull request to implement this, but it would be nice to pick your brain a little bit on where this logic should live.

and of course, congratulations on this fantastic project!!

Completed Score Integrity Check

If an Incomplete score is entered AFTER a complete score is entered it is possible for a participant to stay advanced to the subsequent matchUp. In this situation directed participants should be removed and incomplete scores should not be allowed if there are downstream dependencies.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.