Free and Open Source Online Judge, including a public API, Client and an Admin platform, powered by GraphQL and Angular.
This project is still under developement, contributers are welcome.
Cotato is a generic Online Judge to host competitive programming contest, online or onsite. The project include both the API, and the Client, with a potential admin platform.
Cotato is built using bunch of awesome Open Source Projects, such as:
- GraphQL.js - API's query language
- Express.js
v4.x
- Fast, unopinionated, minimalist web framework - Apollo Client - GraphQL client for angular
- Angular
v4.x
- Structural framework for the Client side
Cotato consists of 2 projects, the API and the client.
The project is built using node, therefore make sure that you have node
(v6.x) and npm
(v3.x) on your machine.
Additionally at this stage, it uses python2 to run the source codes, so make sure you have it installed, to make sure it's v2, you can run:
$ `python --version`
$ git clone https://github.com/mrtensai/cotato.io
$ cd cotato.io
Following is how to get the api up and running:
$ cd api.cotato.io
$ yarn
$ gulp build
$ gulp serve:prod
To run the API in dev (watch) mode, run
$ gulp serve
The API listens on http://localhost:4242/graphql
The client use angular-cli, and this is how to get the client up and running:
$ cd client.cotato.io
$ npm install
$ npm start
The Client can be accessed through http://localhost:4200/
The project is still in the POC state, here's a list of the upcoming features:
- Running a source code on an Input file
- Output comparison
- Problem Judging (AC, WA)
- Authentication
The project also needs some technical enhancement:
- API Build tools enhancements
- API testing
- Container support (Docker)
- Persistence