The Medal Contest Platform

Medal is a small platform for in-browser running contest written in rust.

It is designed for the German Jugendwettbewerb Informatik, a computer science contest with tasks using Google Blockly as a programming language-replacement.

Translation

Folder structure

tasks/

Running Medal

Needs rustc and cargo 1.32 (stable) or higher.

Rust can be obtained here: https://rustup.rs/

Running make compiles and runs a debug-/test-server.

For production use, a release binary should be compiled and served behind a reverse proxy (nginx, apache, …). make release compiles a release build with openssl statically linked for distribution.

The directories tasks/ and static/ can (and for throughput-purposes should) be served by the reverse proxy directly.

Deploy

It is recommended to run the platform behind a reverse proxy, that is serving static files directly.

The following configuration can be used for an Apache 2.4 webserver:

``` ServerSignature Off ProxyPreserveHost On AllowEncodedSlashes NoDecode

ProxyPass /static/ ! ProxyPass /tasks/ ! ProxyPass /favicon.ico ! ProxyPass / http://[::1]:8080/ ProxyPassReverse / http://[::1]:8080/

Alias "/tasks/" "/path/to/medal/tasks/" Alias "/static/" "/path/to/medal/static/" Alias "/favicon.ico" "/path/to/medal/static/images/favicon.png"

Header set Cache-Control "max-age=604800, public"

Require all granted

Require all granted ```

Contributing

Please format your code with rustfmt and check it for warnings with clippy.

You can install those with rustup component add rustfmt --toolchain nightly rustup component add clippy

Format the code and check for warnings with make format make clippy