Racing Web

Racing Web is an online tool for generating race schedules, and running the races live from a computer or smartphone.

Schedule Generation

This race schedule generation method is inspired by the Young and Pope Perfect-N Chart Generator.

  1. Ignore extra lanes when the number of lanes exceeds the number of cars
  2. Each car will race in each lane
  3. The number of heats is the same as the number of cars
  4. All lanes are used in each heat
  5. Heats are re-ordered to try and avoid a car racing in two heats in a row
  6. Car order is offset slightly to encourage cars to race against different opponents


See generated doxygen reference


This project is built on Wt, which (at least to me) is somewhat difficult to manage in Windows. Therefore, this project targets mainly Linux hosts. The primary target is Ubuntu 20.04 AMD64, though if other architectures and target environments are feasible, pull requests to improve compatibility are always welcome.

# build toolchain
sudo apt install make cmake automake gcc g++

# optional development tools
sudo apt install gdb doxygen cppcheck clang clang-format clang-tidy llvm valgrind linux-tools-common
sudo apt install python3-pip && sudo pip install pre-commit cpplint

# download source
git clone --recurse-submodules
cd racingweb

# Wt and dependencies
sudo apt install libboost-all-dev libgraphicsmagick-q16-3 libpq-dev libssl-dev libfcgi-dev
cd dep/wt
mkdir build; cd build
cmake ..
make -C examples # optional
sudo make install
sudo ldconfig
cd ..

# if you will be submitting changes, enable pre-commit
pre-commit install
pre-commit run

# compile racingweb
cmake .


Depending on your IDE or build method, the racingweb executable might be located directly inside the git repo, or possible under a subdirectory created by CMake. These examples assume that the binary is directly inside the source repo, but you can adjust the commands depending on your environment.

cd racingweb
cp -r dep/wt/resources docroot/ # only do this one time
./racingweb --docroot docroot --http-listen localhost:8080

UI Sketches





Copyright (c) 2022 Cameron King. Dual licensed under MIT and GPLv2 with OpenSSL exception. See LICENSE for details.

In short, I prefer more permissive licenses, so the code specifically related to this project is released under the MIT license. This would allow any future developer to take portions of this project code and incorporate it into another project under the MIT license terms. However, since Wt has been released under the GPLv2 license with an OpenSSL exception, anyone who wishes to distribute binaries linked to the Wt libraries must do so under the terms of the GPLv2.


View Github