Skip to content

drop-project-edu/drop-project

Repository files navigation

Drop Project - Continuous Auto-Grader

Build Status codecov Apache License Release

A web application where students drop their projects to check for correctness and quality.

Several checks are performed on each project:

  • Does it have the right folder structure and all the mandatory files?
  • Does it compile?
  • Does it pass its own tests?
  • Does it achieve a minimum coverage with its own tests?
  • Does it pass the teacher tests?
  • Does it conform to the coding guidelines defined by the teacher?
  • Does it perform well? (tests with large datasets are measured)

Requirements

  • Java 17-23 JDK (a compiler is needed). Java 24+ is not supported since the SecurityManager was removed (JEP 486). If using Java 18-23, the JVM flag -Djava.security.manager=allow must be set.
  • Maven
  • Relational database (tested with MySQL but should work with any RDBMS)

Current limitations

  • Only works for Java 8+ / Kotlin projects

How does it work?

Most of the work is done by a Maven Invoker, running several goals on the project. The results are collected into a report that is viewable by the student and the teacher.

Projects can be either simple (non-Maven) projects or Maven projects. Simple projects are "mavenized" by the server after uploading. In this context, "mavenizing" means copying the files into a proper Maven folder structure (e.g. putting the sources into /src/main/java), mixing the student files with the teacher unit tests and adding a pom.xml (also provided by the teacher). Maven projects, on the other hand, are expected to already include a valid pom.xml and follow the standard Maven folder structure.

Since checking a project may take some time, it is done asynchronously - the student submits the file and must come back later to check the report.

How DP works

This video explains how to create a simple Java assignment in Drop Project. It shows both teacher and student perspectives:

https://www.youtube.com/watch?v=65IwIBuMDlE

Running your own Drop Project instance

Using Docker (in-memory database)

docker run -p 8080:8080 ghcr.io/drop-project-edu/drop-project:latest

Using Docker with MySQL

For a full guide on deploying with Docker (environment variables, volumes, optional settings), see docker-deployment.md.

Quick start:

cd deploy
docker compose up

The application should now be accessible on http://localhost:8080

Documentation

https://drop-project-edu.github.io/drop-project/

API

Some services are accessible through an API, protected by personal tokens.

Documentation: https://playground.dropproject.org/dp/swagger-ui/index.html

MCP (experimental)

Drop Project can act an MCP server. Right now, only some operations are permitted and only for teachers.

Just connect to https://<server-url>/mcp/ with an Authorization header: Bearer <your-personal-token>.

Using claude code

claude mcp add --transport http drop-project https://playground.dropproject.org/dp/mcp/ --header "Authorization: Bearer xxxxx" (replace xxxxx with your personal token)

Using github copilot plugin in Intellij

  • Enter the chat window
  • Select "agent" mode
  • Click the tool icon, next to the dropdown with the models
  • Click the "add more tools" button
  • It will open an mcp.json file. Add the following content:
"servers": {
  "drop-project": {
  "url": "https://playground.dropproject.org/dp/mcp/",
  "requestInit": {
    "headers": {
      "Authorization": "Bearer xxxx" (replace xxxxx with your personal token)
    }
  }
}

Plugin

There is a plugin for Intellij that allows students to submit their projects directly from the IDE.

Playground

You can experiment with Drop Project on a public cloud instance. You'll have to authenticate using your github credentials. By default, you'll be assigned the student role. If you wish to experiment with the teacher role, send me an email and I'll be happy to assign you that role.

Playground

Development

For instructions on building from source, running tests, and generating documentation, see development.md.

Citation

  • Cipriano, B.P., Fachada, N. & Alves, P. (2022). Drop Project: An automatic assessment tool for programming assignments. SoftwareX, 18. 101079. https://doi.org/10.1016/j.softx.2022.101079
  • Cipriano, B.P., Baltazar, B., Fachada, N., Vourvopoulos, A., & Alves, P. (2024). Bridging the Gap between Project-Oriented and Exercise-Oriented Automatic Assessment Tools. Computers, 13(7), 162. https://www.mdpi.com/2073-431X/13/7/162

About

A web application where students drop their projects to check for correctness and quality.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors