JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q27780F
  • License ISC

A simple library to manage tournament brackets (round-robin, single elimination, double elimination)

Package Exports

  • duan-brackets-manager
  • duan-brackets-manager/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (duan-brackets-manager) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

brackets-manager.js

npm Downloads Package Quality

A simple library to manage tournament brackets (round-robin, single elimination, double elimination).

It contains all the logic needed to manage tournaments.

Features

  • BYE supported: only during creation (for seeding and balancing).
  • Forfeit supported: only during updates.
  • Match supported (locked, waiting, ready, running, completed, archived).
  • Multiple stages per tournament.
    • So you can first have a round-robin stage (which will give you a seeding), then an elimination stage.

Interface

  • This library doesn't come with a GUI to create and update tournaments.
  • You can use brackets-viewer.js to display the current state of a stage.
  • It is designed to be used with any type of storage (JSON, in-memory, SQL, Redis, and more).
  • Some storage implementations are already available (see the documentation).

Getting Started

For more information, see the documentation.

const { JsonDatabase } = require('brackets-json-db');
const { BracketsManager } = require('brackets-manager');

const storage = new JsonDatabase();
const manager = new BracketsManager(storage);

// Create an elimination stage for tournament `3`.
await manager.create.stage({
  tournamentId: 3,
  name: 'Elimination stage',
  type: 'double_elimination',
  seeding: ['Team 1', 'Team 2', 'Team 3', 'Team 4'],
  settings: { grandFinal: 'double' },
});

await manager.update.match({
  id: 0, // First match of winner bracket (round 1)
  opponent1: { score: 16, result: 'win' },
  opponent2: { score: 12 },
});

Rendered with the viewer:

image

As you can see, the manager is composed of submodules, which themselves have methods:

You can navigate the API documentation here: BracketsManager class documentation

All the helpers defined by the library are available here:

const { helpers } = require('brackets-manager');

Credits

This library has been created to be used by the Nantarena.

It has been inspired by: