Skip to main content

Configure LearnPack for delivering the package as a project

Delivery options: configure no delivery, file uploads (by MIME type), or URL submissions (via regex). You can also accept flags for CTF-style validations. ✅
One of LearnPack’s most popular features is the ability to ask students to deliver the package as homework. Here, you can configure a package to allow or not allow delivery.

Projects with no delivery


Deliver a file

Before setting up your learn.json, you must know which MIME types learners will be able to upload to deliver the project successfully. If you have a sample file, you can upload it to a MIME checker (e.g., mimetype.io) to retrieve the exact string. how to get mime types Once you get the MIME type, specify it under the delivery.formats array:
Examples:

PDF file

Flag coming from Capture the Flag

Text file with multiple MIME possibilities

Sometimes, we want to allow multiple file types. In this case, the learner can upload a file from MS Word or PDF.

Files with unknown MIME type

Some rare files like Packet Tracer .pka do not have a recognized MIME type. In that case, use application/octet-stream followed by the file extension:
Heads up: this is a last resort. Prefer explicit MIME types whenever possible.

The default format to deliver a project is by specifying a GitHub repository URL with the following structure:
You can override that behavior by specifying a regex:
More URL examples:

URL from docs.google.com

URL from anywhere (generic)

Leave the regex key with https:// only. The system will ensure a valid URL is provided.

Quick rubric

Tip: pair delivery settings with your grading mode to align submissions with tests and review workflows.

Next up

LearnPack Configuration

Editor, grading, and delivery settings in learn.json.

Grading LearnPack Tutorials

Incremental, isolated, and no-grading modes, plus test validation.

Telemetry Configuration

Configure batch and stream endpoints for events.

Publish a LearnPack package in the cloud

Ship via Gitpod or Codespaces with minimal setup.

See also