Student Submission Integrity Diagnosis (SSID) is a Ruby on Rails web application suite for managing courses, assignments, staff, teaching assistants, students, and student code submissions and most importantly, to detect and visualize plagiarism among student code submissions.
SSID works with lexers based on ANTLR4 Grammars so if you can find / write a grammar for it, SSID can detect and visualize plagiarism for it (scroll down and click on the guide on "Adding support for new language in SSID" to learn the steps needed to add a new grammar). SSID uses the JavaScript InfoVis Toolkit for its plagiarism visualization. Code display and syntax highlighting is handled by google-code-prettify. The file upload preview feature makes use of JSZip.
NOTE: If you are using a Windows OS, please ensure that you have a linux environment to make changes to the code and run it in either the development or production mode. This is because some functions like fork are not supported by the Windows OS. To run a linux environment on Windows, you can either
- Dual boot linux on Windows (Recommended)
- Install Cygwin
- Ensure you have Java
11
(revision11
or later) installed in your Computer. - Ensure that you have installed Ruby (v2.6.6) and bundler (v2.1.4)
- Since the application uses MySQL as its database server, please ensure that you have installed MySQL 8.0.
Before following the below instructions, please ensure that you have met all the prerequesties listed below. Alternatively, you can also setup the application via docker by clicking on the docker setup documentation all the way below.
-
Clone SSID's source code onto your computer
git clone https://github.com/WING-NUS/SSID.git
-
Go to config/database.yml and modify the file by changing the username and password fields with your MySQL database settings (Please do it for all the 3 listed databases in the file)
-
Now, go to config/environments/ and add the respective line to the respective file(s)
- Under config/environments/development.rb & config/environments/test.rb, add the below line:
config.eager_load = false
- Under config/environments/production.rb add the below line:
config.eager_load = true
-
Open your terminal and navigate to the code directory. Run bundler to install the necessary gems (including rails) from the root directory of SSID:
bundle install
#Use the following solution if you have problem "Your bundle is locked to mimemagic (0.3.5)"
https://stackoverflow.com/questions/66919504/your-bundle-is-locked-to-mimemagic-0-3-5-but-that-version-could-not-be-found
-
Execute the following command in the root directory of SSID depending on which mode you wish to run the app:
- Production Mode
rake db:migrate RAILS_ENV=production rake db:seed
- Development Mode
rake db:create db:schema:dump db:migrate RAILS_ENV=development rake db:seed
-
Running SSID: Execute the following command in the root directory of SSID depending on which mode you wish to run the app:
-
Production mode: configure Apache to serve web requests to SSID
-
Development mode:
RAILS_ENV=development rails server
-
- [Setting up using Docker] (doc/docker.md)
- Adding support for new language in SSID
- Deploying SSID app on a Linux/Unix production server
- Guide for semestral clearing of courses and submissions
- Setting product update announcement
- User Guide
To request features, you may want to log an issue on Github.
For other inquiries, please contact us with subject starting with [SSID]
SSID is licensed under the [GNU Lesser General Public License] gpl