First of all, thanks so much for taking the time to contribute! 👍
Since this isn't really an official project, there aren't many contribution guidelines you need to follow. In fact, it could probably be summed up in one sentence: "If you want to contribute, go ahead!"
We do have a code of conduct (although it's completely copied from a template 😆). Basically, as long as you aren't being rude to other people, you're welcome to help out!
Bugs are bad. We all hate them. So if you come across a bug, pleaseeeeeeeeee report it on Github! You don't even need to follow the template if you don't want to. The more bugs we fix, the better JudgeLite will be!
Features are great as well, and useful features would help make JudgeLite an even better judge! If you have any ideas for new features, feel free to suggest them by making a feature request in the Issues tab on Github.
These are a bit weirder to do. It probably isn't the best idea to make a pull request without any previous conversation. However, the codebase of JudgeLite is actually pretty easy to contribute to (it's not that big, and the code mostly makes sense / is somewhat documented).
So for now, probably report an issue or suggest a feature first. If you want to help us solve that issue / make the feature by creating a pull request, let us know by saying that in the issue / feature report (I doubt there will ever be a case where we'll say no to a pull request, but just in case...).
In order to write / test code for JudgeLite, all you need to do is write the code, then build and run the Dockerfile to test the code. This will be pretty slow the first time you do it, but it will be really fast after the first builds (Docker caches layers in the build).
As a side note, we do have tests in the tests folder. If you do make a pull request, try to add a test for the code you write. It's not mandatory, but we wanna try to keep our codecov in the A range (to get that sweet 4.0 GPA 😄).
Again, thanks so much for helping us out! We really appreciate it ❤️