The dojo platform is an HES-SO that is an online tool built to help practice programming by
allowing users to propose assignments and perform them as exercises.
The tool is very flexible and allows for proposing exercises for any language
and does not impose any limitation on a framework to be heavily relying
on Docker and Gitlab. These tools used in combination allow for automatic
correction of assignments in order to give immediate feedback to users
performing exercises. Solved exercises can then be shared among the community
of users such that they can inspire other users or give hints on ways to solve
a given exercise.
The two major concepts of the platform are the **assignments** and the **exercises**.
The principal way to interact with the Dojo platform is currently the `dojo` CLI.
### The assignment
An assignment is written by a user that wants to propose an exercise. It is typically composed of a written description of the work to be performed,
and tests that must be passed once the exercise is successfully performed (and some configuration files for the infrastructure of the tests
such as docker files). At its core, an assignment is
nothing else than a git repository that can be forked in the form of an exercise and modified using standard git commands.
In the future a dependency tree of assignments can be created, as well as tagging for filtering purposes.
### The exercise
An exercise is an instance of an assignment which the learner will modify in order to make it pass the automatic tests.
It can be run locally on any user's machine using the dojo CLI. When the exercise is completed
it is pushed on the dojo where the CI/CD tools of Gitlab can evaluate it automatically and
notify the dojo platform of the result. The exercises can then be shared with other users
in order to propose a wide variety of solutions and can be a base for discussion among users
and with teachers.
## Main projects that are part of the Dojo platform
*[DojoBackendAPI](https://gitedu.hesge.ch/dojo_project/projects/backend/dojobackendapi): The API backend of the dojo platform
*[DojoExerciseChecker](https://gitedu.hesge.ch/dojo_project/projects/pipelines/dojoexercisechecker): The app (bundled in a Docker image) that check if an exercise have been solved correctly
*[DojoAssignmentChecker](https://gitedu.hesge.ch/dojo_project/projects/pipelines/dojoassignmentchecker): The app (bundled in a Docker image) that check if an assignment is valid
*[DojoCLI](https://gitedu.hesge.ch/dojo_project/projects/ui/dojocli): The command line interface to interact with the dojo platform
*[DojoWeb](https://gitedu.hesge.ch/dojo_project/projects/ui/dojoweb): The frontend of the dojo platform (coming soon)
## How to use Dojo ?
The principal way to interact with the Dojo platform is currently the `dojo` CLI.
You can find all the documentation in the [Wiki of the CLI project](https://gitedu.hesge.ch/dojo_project/projects/ui/dojocli/-/wikis/home).
## Support
* If you are a student that search help for a specific assignment, please contact your teaching staff.
* For any other questions, feature proposals or bug reports, please open an issue on the [Dojo Issues project](https://githepia.hesge.ch/dojo_project/issues/-/issues) on Gitlab and don't forget tags.
## Roadmap
You can find the roadmap (the deadlines are not available) of the project in the [Dojo Issues project](https://githepia.hesge.ch/dojo_project/issues/-/boards) on Gitlab.
## Contacts / Developers
*[Michaël Minelli](mailto:dojo@minelli.me): Main contact / developer