After launching the track with the first 20+ exercises and a test runner, the focus should shift to implementing additional track tooling.
There are two types of track tooling:
There are (currently) three pieces of tooling for production:
To help with track maintenance, one can also build:
The production tools are more important than maintenance tools. At this point, you should have implemented a Test Runner (if not, check the Build a test runner docs).
Having built a test runner, the next tool to work on is the Representer. There is some overlap between the goals of the Representer and the Analyzer, but we recommend building the Representer first for the following reasons:
To get started building a Representer, check the Creating a Representer from scratch document.
Finally, after having implemented a Representer, the last tool to build is the Analyzer. To get started building an Analyzer, check the Creating an Analyzer from scratch document.
At this point, focus should probably shift back to adding more exercises. To speed up adding new exercises, consider building a Test Generator.
Track tooling is usually (mostly) written in the track's language.
While you're free to use other languages, each additional language will make it harder to maintain or contribute to the track. Therefore, we recommend using the track's language where possible, because it makes maintaining or contributing easier.
Production tools are packaged and run as a Docker container. Tooling Docker images are deployed automatically using a GitHub Actions workflow.
Maintenance tools are not deployed.