All Projects → oakmac → tourney-bot

oakmac / tourney-bot

Licence: ISC License
an app to run the Houston Ultimate Indoor Tournament

Programming Languages

clojure
4091 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language
PHP
23972 projects - #3 most used programming language
HTML
75241 projects
TSQL
950 projects

Projects that are alternatives of or similar to tourney-bot

woapp
web模拟安卓操作系统,php开发,内置文件管理,电话,短信,拍照,用在树莓派上可做智能家居,视频监控,机顶盒等……
Stars: ✭ 22 (+37.5%)
Mutual labels:  web-app
sc2gears
The COMPLETE (!) source code of the Sc2gears universe (Sc2gears app + Sc2gears Database + web-based parsing engine - bundled in an Eclipse project).
Stars: ✭ 30 (+87.5%)
Mutual labels:  web-app
stoqs
Geospatial database visualization software for oceanographic measurement data
Stars: ✭ 31 (+93.75%)
Mutual labels:  web-app
tournament-generator
A set of classes used to create multiple kinds of tournament brackets in PHP
Stars: ✭ 38 (+137.5%)
Mutual labels:  tournament
open-data-smn
An API to serve publicly available data from the SwissMetNet in 10min intervals
Stars: ✭ 23 (+43.75%)
Mutual labels:  swiss
vollt
Java libraries implementing the IVOA protocol: ADQL, UWS and TAP
Stars: ✭ 21 (+31.25%)
Mutual labels:  web-app
image-discovery-app-js
JavaScript Image Discovery Web Application. Use to search, discover, filter, and manipulate imagery.
Stars: ✭ 22 (+37.5%)
Mutual labels:  web-app
web
Cloverleaf is a free, open source app to replace your password manager without storing your passwords anywhere.
Stars: ✭ 33 (+106.25%)
Mutual labels:  web-app
lazy ncaa elm
An Elm app to randomly generate tournament bracket winners
Stars: ✭ 14 (-12.5%)
Mutual labels:  tournament
reactjs-portfolio
Welcome to my portfolio react.js repository page.
Stars: ✭ 109 (+581.25%)
Mutual labels:  web-app
Smart-Web-App-Banner
Add this small jQuery script to your site & invite your visitors to save your site to their home screen alongside the rest of their apps!
Stars: ✭ 37 (+131.25%)
Mutual labels:  web-app
Arcadia-Auction
CSGO League App | Featured on Google DevLibrary
Stars: ✭ 17 (+6.25%)
Mutual labels:  tournament
brackets-viewer.js
A simple library to display tournament brackets (round-robin, single elimination, double elimination).
Stars: ✭ 52 (+225%)
Mutual labels:  tournament
stockfish-chess-web-gui
Responsive chess web GUI to play against the Stockfish 10 chess engine. Multiple web GUI implementations have also been included.
Stars: ✭ 21 (+31.25%)
Mutual labels:  web-app
docker-rcon-web-admin
A Docker image that runs rcon-web-admin
Stars: ✭ 34 (+112.5%)
Mutual labels:  web-app
CKBracketView
Tournament bracket view for iOS. Developed in swift.
Stars: ✭ 38 (+137.5%)
Mutual labels:  tournament
apertium-html-tools
Web application providing a fully localised interface for text/website/document translation, analysis and generation powered by Apertium.
Stars: ✭ 36 (+125%)
Mutual labels:  web-app
servant-beam-realworld-example-app
Exemplary fullstack Medium.com clone powered by Servant and Beam
Stars: ✭ 33 (+106.25%)
Mutual labels:  web-app
music-app-electron
Music-Streaming app built with Electron, Webpack, Vue.js, Vuex and the Spotify api.
Stars: ✭ 74 (+362.5%)
Mutual labels:  web-app
Swiftly
Swiftly is an easy to use Qt/C++ web framework
Stars: ✭ 20 (+25%)
Mutual labels:  web-app

TourneyBot

This project is for the web application used to run the Houston Indoor Ultimate tournament. An installation of this project can be seen at houstonindoor.com

The Houston Indoor tournament uses a Swiss system with some unique criteria. In particular, since there is typically only one field available for an indoor tournament, field time needs to be maximized with a game always playing. The tournament is scheduled with exactly one minute of down time between games; just enough time for teams to switch on and off the field.

This is a challenge for a Swiss system where you do not know the next round's matchups until all the games in a round are played. This application provides tools for dealing with this situation and ensuring that a "forward schedule" is always available.

In addition, it provides a mobile-friendly website where players can see the current schedule, their team results, and general tournament information. The public-facing website receives near-realtime updates of all tournament information, so players do not need to refresh the page in order to see the latest information. See the architecture section for more information about this feature.

Screenshots

Here are some screenshots of TourneyBot.

Development Setup

Install Leiningen and Node.js

# install node_modules (one-time)
npm install

# you may wish the run the following commands in separate console tabs / windows

# build CLJS files
lein clean && lein cljsbuild auto

# compile LESS into CSS
grunt watch

# run a local web server out of public/ on port 9955
node server.js 9955

# produce a build in the 00-publish/ folder
grunt build

Installation

The steps for starting a new tournament are roughly as follows:

  1. Make sure the CLJS-generated files exist by running lein clean && lein cljsbuild once
  2. Create a build in the 00-publish folder with the command grunt build
  3. Copy the 00-publish/ folder to a public web server that has PHP installed.
  4. Edit the info.md file as appropriate for your tournament.
  5. Edit the tournament.json file as appropriate for your tournament.
  6. Set a password in api.php

Architecture

TourneyBot can be thought of as two separate applications that are designed to work together: the client side and the admin side.

The entire tournament state is held in the tournament.json file. The client side polls for that file every few seconds and updates the UI accordingly. The admin side contains functions that modify tournament.json and save it to the server. You could, for example, run an entire tournament by editing the tournament.json file directly.

The Info page is held in info.md and requested on initial load, then again every 5 minutes. It is expected that the info page will not change very much while the tournament is happening.

The role of PHP in TourneyBot is minimal and could be swapped out for something else easily. It was just the most convenient hosting option for me for the 2016 tournament.

Future Development

TourneyBot was primarily created for the 2016 Houston Indoor Ultimate Tournament and has a lot of code to deal with the unique constraints of that tournament.

It would be great to extend this project and make it more flexible for other Ultimate tournament formats. Please reach out or post in the issues if you are interested in helping with that.

License

ISC License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].