Dash is a competition framework designed to run and visualize programming-based challenges. It supports multiple competitions, with current implementations for Beacon and Marvin.
- Overview
- Prerequisites
- Installation
- Configuration
- Running the Competition
- Results & Logs
- Visualization
- Scripts
- License
Dash enables participants to compete in programming challenges by providing executable solutions. The framework supports:
- Multiple competitions with modular grading
- Configuration-driven execution
- Automated logging and result storage
- Visualization tools for performance analysis
Ensure you have the following installed before proceeding:
- Taskfile - Required for running compilation tasks (optional)
- Docker - Used for containerized execution
- Git - Necessary for managing participant repositories
- GitHub Organization – A dedicated organization where all repositories will be created
- template-{competition} Repository – A template repository inside the dedicated organization used for initializing participant repositories
For authentication and repository management, a valid GitHub Personal Access Token (PAT) is required. The token must have the following scopes:
admin:orgrepodelete_repo
Clone the repository:
# Clone the repository
git clone https://github.com/42-Dash/dashinette.git
cd dashinetteAll configuration files are stored in the config/ directory:
maps.json– Defines competition mapsparticipants.json– Lists participating teams.env– Stores environment variables
Create a .env file in config/ with the following format:
GITHUB_ACCESS=your_github_access_token
GITHUB_ORGANISATION=your_github_organisationDash competitions are compiled and executed using Taskfile:
# Run the contest using Taskfile
task {competition to start}
# Or run the contest directly
go run cmd/{competition}/{competition}/main.goThis launches a CLI menu allowing you to:
- Initialize repositories
- Analyze submissions
- Run grading and visualization
- Manage collaborators
Competition results and logs are stored in the root directory:
app.log– Stores execution logsopen_results.json– Results for Open Leaguerookie_results.json– Results for Rookie League
Each competition has a dedicated visualizer located in:
dashes/{competition}/visualiser/Detailed documentation for visualizers can be found in the respective README.md files.
Additional scripts are available in scripts/general/:
delete_repos.sh– Deletes all competition repositoriesreshuffle_config.sh– Randomizes participant order for fairness
The project license will be added soon. See LICENSE for more details.