Web application for automatically grading programs.
APGW provides a single platform for students and teachers to automate the process of grading programming assignments. Teachers can create assignments and generate grading reports, while students can upload programs. APGW automatically calculates grades based on the test cases provided by the teacher.
Note: This is pre-release software. Docker builds are planned.
- You will need a Google OAuth2 project so that users can login using their google accounts. Create one by following this tutorial
- Allow Google+ API access to the project. This is required to read basic details such as name and email-id of the user.
- A MariaDB/MySQL database is required to store data.
- Setup a database with whatever name you like. Note down the name, password and URL of the database.
-
A Linux based operating system is required. A stable operating system such as Debian is recommended.
-
Install
jdk 8
andmaven
. Other versions of java are unsupported. -
Install
docker
and start docker service. We recommend you get the latest version from docker website, as the packages in official repositories might be outdated. To start docker service on OS with systemd, you can use the command,sudo systemctl start docker
-
Get the
gcc:7.3
image.docker pull gcc:7.3
-
Get a copy of this code using git, or by downloading the zip
git clone https://github.com/InfiniteCoder/apgw.git
-
Compile the code using maven
cd apgw && mvn package
this will generate a fat jar in target directory.
-
Set Environmental variables
apgw_client_id
: Client id for the google OAuth2 projectapgw_client_secret
: Client secret for the google OAuth2 projectapgw_db_password
: Database user passwordapgw_db_url
: Database urlapgw_db_username
: Database userfile-path
(optional) : Path where files(eg: Assignments, programs) should be stored. Defaults to user home. A directory namedapgw
will be created at this path.
-
Execute
java -jar /target/*.jar
-
The application will listen on port 8080 on all IP addresses.
APGW is licensed under GNU GPLv3. For more, see LICENSE.