Online Judge for holding coding competitions
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
app
bin
config
db
judge_data/judge_exec
lib
log
public
spec
tmp
vendor/assets
.gitignore
.rspec
.rubocop.yml [FEAT] added rubocop Dec 20, 2016
.rubocop_todo.yml
.ruby-version
.travis.yml
Gemfile
Gemfile.lock
Guardfile
LICENSE
README.md
Rakefile
config.ru

README.md

Online Judge Build Status

-> Online Judge inspired from revi-oj

About

OnlineJ is an online code judge which can be used to hold coding contests online. It is developed and maintained by the GNU/Linux Users' Group NIT Durgapur. The project is inspired . The main aim of the project is to promote the culture of competitive coding in instituions like schools,colleges and university by providing them with the tool to host coding contest according to their rules and regulations. The code judge is currently capable of judging codes in all languages. The most frequetly used languages like C,C++,Python,JAVA,Ruby are already added to the judge. If requried other languages can be added easily by follow the guide mentioned here.

Prerequisites

RubyonRails

OnlineJ is built on Ruby with Rails as the web framework. To the get app up and running you need to have Ruby and Rails install on your local machine or the server. Follow this guide to set up RubyonRails

MongoDB

The database used in the app is MongoDB, so it must be configured on you local machine. Follow the guide if you dont have MongoDB installed

Redis

Get Redis install and running on your machine follow the guide

Setting Up

  1. Run git clone
  2. Inside the clone directory run bundle install to install all the gems.
  3. Run bundle exec rake judge:init to build the code judge.
  4. Start the server with rails s.
  5. In a new terminal tab run bundle exec sidekiq.
  6. The first registered user will be given admin rights by default.

Workflow

To start a constest on the app, first a setter has to be made. Only a admin can appoint a setter. Then a setter can host a contest. A contest can have many problems in it. A problem will have associated languages and many submission by different users.

Note: When creating a language make sure to use the name provided by the codemirror modes E.g for C language.name="text/x-csrc", the language code could be the language name we generally use like C/C++, JAVA