Giter Club home page Giter Club logo

cmsrs's Introduction

cmsrs

ci

A contest management system for local competitive programming contests like ioi or icpc.

Inspired by other similar projects like cms and DOMjudge.

The goals of this project are to be: easy to set up, fast, configurable; in that order.

For ease of use docker and docker-compose configuration files are provided.

Dependencies:

Docker dependencies:

With the use of docker, and end user, to set up a working environment, will only need:

  • docker
  • docker-compose

Build dependencies:

Dependencies used to build the binaries outside of the ones managed by Cargo:

  • protoc if prost-build does not have a precompiled protoc for your platform (more info)

Runtime dependencies:

Dependencies that will be used at runtime, not that if you are using docker, you should not have to worry about these.

  • mongodb for contest service and submission service

Project structure:

This project is subdivided in the following binaries:
  • submission service: rpc service that manages submissions
  • evaluation service: rpc service that manages evaluation files and configuration
  • contest service: rpc service that manages participant communication, files and configuration
  • dispatcher service: rpc service that dispatches submission evaluation to workers
  • worker service: rpc service that evaluates submissions
  • admin webserver: webserver for admin interaction
  • participant webserver: webserver for participants
  • scoreboard webserver: webserver that builds and shows a scoreboard
And the following libraries:
  • protos: contains everything related to service communication
  • utils: contains commonly needed utilities

cmsrs's People

Contributors

myk00l avatar eutampieri avatar filipposelvatici avatar giackaloz avatar marcoselvatici avatar

Stargazers

Edoardo Morassutto avatar  avatar

Watchers

James Cloos avatar  avatar  avatar

cmsrs's Issues

Mutability difference using mock directly

When using a mock client directly, it doesn't need to be mutable for calls, but it would if it would be a normal client, which leads to misleading warnings in the rocket webservers

Serialization of Duration and Timestamp protobuf types

We need a way to serialize these types with serde in Rust, or decide not to use them in favour of storing milliseconds as uint64 and then perform appropriate conversions.

This is not top priority, but it would be great for readablity.

mongodb unsafe conversions

to convert between sized and unsized for storing in mongodb we should use something like chained to_le_bytes and from_le_bytes

tidy protos

single common.proto and everything else in the protos describing the services would be better than the mess it is now

Mongo version

Mongo 5 won't work on oldish hardware
Mongo 4 won't report validation errors properly

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.