The project aims to help teachers to provide better learning experiences to students. In particular, its modular approach allows everyone to extend it easily and integrate others' code with a one-liner. The orchestrator crate is the default crate in this repository, and its documentation is readable here. Then, we developed different plugins:
- Backend: starts a rocket backend serving a generic frontend. See Documentation
- SQL-abstractor: A plugin to connect to an SQL database (at the moment, we explicitly support only PostgreSQL). See Documentation;
- Rust-default: compute a Rust exercise from a template file. See Documentation
This project was started as my final university dissertation. It is still a work in progress, and any help would be appreciated.
For a development installation, the following dependencies are needed:
- Rustup, with at least one nightly toolchain. (the project is compilable with stable, but rust-exercise execution requires a nightly toolchain).
- Standard compilers. On Ubuntu it is called build-essentials; on Arch systems, it is called base-devel.
- trunk for the backend/frontend. It can be easily installed with cargo install trunk:
cargo install trunk- tarpaulin: to generate coverage. It is not strictly required, but it is helpful. It can be installed with:
cargo install tarpaulin- PostgreSQL: to test we deployed PostgreSQL in a docker container. If needed, it is possible to deploy it elsewhere. If you want to use our testing script you will need docker installed on your system.