{"id":38602178,"url":"https://github.com/drop-project-edu/drop-project","last_synced_at":"2026-01-17T08:34:34.855Z","repository":{"id":37263088,"uuid":"173646045","full_name":"drop-project-edu/drop-project","owner":"drop-project-edu","description":"A web application where students drop their projects to check for correctness and quality.","archived":false,"fork":false,"pushed_at":"2025-12-30T16:38:36.000Z","size":3498,"stargazers_count":26,"open_issues_count":8,"forks_count":18,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-01-03T10:17:32.185Z","etag":null,"topics":["auto-grading","automated-assessment","java","kotlin","spring-boot","teacher-tests"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drop-project-edu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-03-04T00:14:34.000Z","updated_at":"2025-12-16T14:34:29.000Z","dependencies_parsed_at":"2024-05-09T19:29:20.556Z","dependency_job_id":"89bd67c5-3fc4-47dc-85c6-7237abe804d3","html_url":"https://github.com/drop-project-edu/drop-project","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/drop-project-edu/drop-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drop-project-edu%2Fdrop-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drop-project-edu%2Fdrop-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drop-project-edu%2Fdrop-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drop-project-edu%2Fdrop-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drop-project-edu","download_url":"https://codeload.github.com/drop-project-edu/drop-project/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drop-project-edu%2Fdrop-project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28504365,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auto-grading","automated-assessment","java","kotlin","spring-boot","teacher-tests"],"created_at":"2026-01-17T08:34:34.270Z","updated_at":"2026-01-17T08:34:34.843Z","avatar_url":"https://github.com/drop-project-edu.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"77px\" height=\"77px\" align=\"right\" src=\"docs/dp_logo.png\"/\u003e\n\n# Drop Project - Continuous Auto-Grader\n\n![Build Status](https://github.com/drop-project-edu/drop-project/workflows/Run%20Tests/badge.svg?branch=master)\n[![codecov](https://codecov.io/gh/drop-project-edu/drop-project/branch/master/graph/badge.svg)](https://codecov.io/gh/drop-project-edu/drop-project)\n[![Apache License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0)\n[![Release](https://img.shields.io/github/v/release/drop-project-edu/drop-project?label=ghcr)](https://github.com/drop-project-edu/drop-project/pkgs/container/drop-project)\n\nA web application where students drop their projects to check for correctness and quality.\n\nSeveral checks are performed on each project:\n\n* Does it have the right folder structure and all the mandatory files?\n* Does it compile?\n* Does it pass its own tests?\n* Does it achieve a minimum coverage with its own tests?\n* Does it pass the teacher tests?\n* Does it conform to the coding guidelines defined by the teacher?\n* Does it perform well? (tests with large datasets are measured)\n\n## Requirements\n\n* Java 17+ JDK (a compiler is needed)\n* Maven\n* Servlet Engine (Tested with tomcat and jetty)\n* MySQL\n\n## Current limitations\n\n* Only works for Java 8+ / Kotlin non-maven projects\n\n## How does it work?\n\nMost of the work is done by a Maven Invoker, running several goals on the project.\nThe results are collected into a report that is viewable by the student and the teacher.\n\nProjects must not be maven projects because they are \"mavenized\" by the server, after uploading.\nIn this context, \"mavenizing\", means copying the files into a proper Maven folder structure (e.g. putting the sources\ninto `/src/main/java`), mixing the student files with the teacher unit tests and adding a `pom.xml`\n(also provided by the teacher).\n\nSince checking a project may take some time, it is done asynchronously - the student submits the file and must come\nback later to check the report.\n\n![How DP works](docs/how_dp_works.png)\n\nThis video explains how to create a simple Java assignment in Drop Project. It shows both teacher and student perspectives:\n\nhttps://www.youtube.com/watch?v=65IwIBuMDlE\n\n## Quick start\n\nAfter cloning the repository, change the following properties:\n\n    dropProject.maven.home=\u003cpath_to_maven_home\u003e\n    dropProject.maven.repository=\u003cpath_to_maven_repository\u003e\n\nin the following files:\n\n     src/main/resources/drop-project.properties\n     src/test/resources/drop-project-test.properties \n\nNote:\n\n* Configuring the first file will allow you to run Drop Project.\n* Configuring the second file will allow you to run Drop Project's unit tests.\n* Linux users: the Maven Home is usually in `/usr/share/maven` (otherwise, try: `whereis maven`) and the Maven Repository is in `/home/\u003cUSERNAME\u003e/.m2`\n* Windows users: the Maven Home is the installation directory and the Maven Repository is in `c:\\Users\\\u003cUSERNAME\u003e\\.m2`\n\nAnd run the embedded tomcat runner:\n\n    mvn spring-boot:run\n\nThe application should now be accessible on [http://localhost:8080](http://localhost:8080)\n\n## Running with docker\n\n### Demo mode (in memory database)\n\n    docker run -p 8080:8080 ghcr.io/drop-project-edu/drop-project:latest\n\n### Demo mode (using mysql)\n\nClone the project and in the root folder execute:\n\n    docker compose up\n\nThe application should now be accessible on [http://localhost:8080](http://localhost:8080)\n\n### Demo mode (using mysql, building from sources)\n\n    docker compose -f docker-compose-dev.yml up\n\n## Running on GitHub Codespaces\n\nYou can run Drop Project on [GitHub Codespaces](https://github.com/features/codespaces) by clicking the button below:\n\n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/drop-project-edu/drop-project)\n\nThis will open a new codespace with Drop Project already cloned.\n\nTo run Drop Project, open a terminal in the codespace and in the root directory execute:\n\n    docker compose -f docker-compose-dev.yml up\n\nOnce the server is running, you can access the application using either of the following methods:\n\n* Navigate to the Ports tab (located next to the Terminal tab in the bottom panel). Find port 8080, hover over the \"Local Address\" column, and click the globe icon (Open in Browser).\n\n* Hold Ctrl (or Cmd on macOS) and click the link http://localhost:8080 directly inside the Codespace.\n\n## Documentation\n\n[https://drop-project-edu.github.io/drop-project/](https://drop-project-edu.github.io/drop-project/)\n\nTo generate source code documentation, run:\n\n    mvn dokka:dokka\n\nThe generated documentation will be available in the following folder:\n\n    target/dokka/drop-project/index.html\n\n## Unit Tests\n\nTo execute the unit tests, run:\n\n    mvn test\n\n## Unit Test Coverage\n\nTo measure the unit test coverage, run:\n\n    mvn jacoco:report\n\nNote: to run the coverage measurement, you must first run the unit tests themselves.\n\nThe test coverage report will be available in the following folder:\n\n    target/site/jacoco/index.html\n    \n## API\n\nSome services are accessible through an API, protected by personal tokens.\n\nDocumentation: [https://playground.dropproject.org/dp/swagger-ui/index.html](https://playground.dropproject.org/dp/swagger-ui/index.html)\n\n## MCP (experimental)\n\nDrop Project can act an [MCP](https://modelcontextprotocol.io/) server. Right now, only some operations are permitted and only for teachers.\n\nJust connect to `https://\u003cserver-url\u003e/mcp/` with an Authorization header: `Bearer \u003cyour-personal-token\u003e`.\n\n### Using claude code\n\n    claude mcp add --transport http drop-project https://playground.dropproject.org/dp/mcp/ --header \"Authorization: Bearer xxxxx\" (replace xxxxx with your personal token)\n\n### Using github copilot plugin in Intellij\n\n* Enter the chat window\n* Select \"agent\" mode\n* Click the tool icon, next to the dropdown with the models\n* Click the \"add more tools\" button\n* It will open an mcp.json file. Add the following content:\n```json\n\"servers\": {\n  \"drop-project\": {\n  \"url\": \"https://playground.dropproject.org/dp/mcp/\",\n  \"requestInit\": {\n    \"headers\": {\n      \"Authorization\": \"Bearer xxxx\" (replace xxxxx with your personal token)\n    }\n  }\n}\n```\n\n## Plugin\n\nThere is a [plugin for Intellij](https://plugins.jetbrains.com/plugin/25078-drop-project) that allows students to submit their projects directly from the IDE.\n\n## Playground\n\nYou can experiment with Drop Project on a public cloud instance. \nYou'll have to authenticate using your github credentials. \nBy default, you'll be assigned the student role. \nIf you wish to experiment with the teacher role, send me an email and I'll be happy to assign you that role.\n\n[Playground](https://playground.dropproject.org/)\n\n## Citation\n\n* Cipriano, B.P., Fachada, N. \u0026 Alves, P. (2022). Drop Project: An automatic assessment tool for programming assignments. *SoftwareX*, 18. 101079. \u003chttps://doi.org/10.1016/j.softx.2022.101079\u003e\n* Cipriano, B.P., Baltazar, B., Fachada, N., Vourvopoulos, A., \u0026 Alves, P. (2024). Bridging the Gap between Project-Oriented and Exercise-Oriented Automatic Assessment Tools. *Computers*, 13(7), 162. \u003chttps://www.mdpi.com/2073-431X/13/7/162\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrop-project-edu%2Fdrop-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrop-project-edu%2Fdrop-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrop-project-edu%2Fdrop-project/lists"}