Course-in-a-Box is a free, open-source Jekyll template from Peer 2 Peer University (P2PU) for building and publishing online courses directly from a GitHub repository, with no coding required.
What is Course-in-a-Box?
Course-in-a-Box is a static-site template built on the Jekyll framework that turns a GitHub repository into a complete course website. It takes course content written as Markdown and generates a navigable site with modules, which P2PU uses as the standard structure for course content. The template is maintained by Peer 2 Peer University, a nonprofit organization, and is shared under an MIT License, while your course modules are shared under a CC BY-SA 4.0 license. To start, you fork the repository, delete the CNAME file, and then customize the content and design.
Key Features
- No coding required — Fork the repository and delete the CNAME file to create a course; the template handles the technical setup.
- Built on Jekyll — The template runs on Jekyll, a static site generator, so the output is fast, secure HTML pages with no server-side database.
- Docker-based local development — A single Docker command (using the
ruby:2.7image) serves the site locally on port 4000 withbundle exec jekyll serve. - Customizable layouts and styles — Edit
_layouts,_includes, andcssdirectories to change the template's structure and appearance. - Module-based course structure — Course content is organized into "Modules," and the template provides the page structure to present them.
- Open-source license — The template itself is MIT-licensed, and course content is separately licensed under CC BY-SA 4.0.
- Documentation and support — Detailed documentation is available at course-in-a-box.p2pu.org, and questions can be asked on P2PU's Community Forum.
Who is it for?
Course-in-a-box is built for educators, subject-matter experts, and community organizations who want to publish an online course without learning web development. A non-profit organization can fork the repo and create a course site for their learners. An independent instructor can use the template to structure lessons into modules and host them for free on GitHub Pages. A university program developer can customize the Jekyll layouts to match institutional branding.
What can you do with Course-in-a-Box?
- Course creators: Turn a GitHub repository into a structured course website with modules, using Markdown for content and the provided Jekyll layouts for navigation.
- Organizations: Publish open educational resources under a CC BY-SA license, with the template separating the code license from the content license.
- Developers: Extend the template by modifying
_layoutsand_includesto add new page types or widgets, then run the site locally via the included Docker setup.
How does Course-in-a-Box work?
The workflow starts by forking the Course-in-a-Box repository to your GitHub account and deleting the CNAME file to use your own domain. You then edit the course content files, which are written in Markdown, and commit changes; Jekyll builds the static site from these files. For local preview, you run the provided Docker command that installs dependencies and starts a Jekyll server on port 4000.
Pricing
Course-in-a-Box is free and open source. The template is released under the MIT License, and there are no paid tiers or subscription fees.
FAQ
Do I need coding experience to use Course-in-a-Box?
No. The template is designed for people with no prior coding experience. You create a course by forking the repository, deleting the CNAME file, and editing content files written in Markdown. Customizing layouts and styles may require some HTML and CSS knowledge, but the core course-building workflow does not.
What license does Course-in-a-Box use?
The template itself is open source under the MIT License. Course content (the "Modules" you create) is shared under a CC BY-SA 4.0 license, so you can reuse and adapt it as long as you attribute the source and share under the same license.
How do I run Course-in-a-Box locally?
Install Docker, then run the provided command: docker run -i -t --rm -u 1000:1000 -p 4000:4000 -v $(pwd):/opt/app -v $(pwd)/.bundler/:/opt/bundler -e BUNDLE_PATH=~/opt/bundler -w /opt/app ruby:2.7 bash -c "bundle install && bundle exec jekyll serve --watch -H 0.0.0.0". This serves the site at http://localhost:4000.
Who maintains Course-in-a-Box?
Course-in-a-Box is built by Peer 2 Peer University (P2PU), a nonprofit organization. Support is provided through the P2PU Community Forum, which has a dedicated category for Course-in-a-Box questions.





