examify
v0.4.2
Published
Create exams from Markdown and export to Canvas QTI format
Maintainers
Readme
Examify
📖 Documentation • 📦 Quarto Extension • 🐛 Report Bug
⚡ The Ecosystem
Examify isn't just a converter — it's a complete workflow for modern assessment authoring.
| Examify CLI | Quarto Extension |
|:---:|:---:|
| 💻 For Developers & Authors | 🧪 For Data Scientists |
| Convert any Markdown file to QTI. | Author in .qmd with R/Python code. |
| Automated image bundling. | Dynamic, randomized questions. |
| examify quiz.md -o quiz.qti.zip | quarto render exam.qmd |
✨ Features
📝 Markdown First
Write questions in simple, clean Markdown. No XML, no GUI clicking. Focus on your content.
🧮 LaTeX Native
Full support for inline $...$ and display $$...$$ math. We handle the complex conversion to Canvas HTML automatically.
🖼️ Auto-Bundle Images
Reference local images (). We automatically package them with imsmanifest.xml so they just work.
🎓 Import Emulator
Predict import success before you upload. Our emulator validates your package against Canvas strict requirements.
🔒 Security Hardened
Built-in protection against XSS and path traversal. We sanitize every input to ensure your exams are safe for LMS deployment.
🎯 6 Question Types
Multiple choice, true/false, multiple answer, short answer, essay, and numeric. All Canvas-compatible.
🚀 Quick Start
1. Installation
git clone https://github.com/Data-Wise/examify.git
cd examify
npm install && npm run build && npm link2. Create Your Exam
Use a template or write from scratch:
# Statistics Quiz
# Section: Multiple Choice
## 1. Which statistical test compares two means? [2 pts]
a) Chi-Square
b) **T-Test** ✓
c) ANOVA
d) Regression
## 2. [TF] Correlation implies causation. → False
## 3. [Essay, 10pts] Explain the Central Limit Theorem.3. Convert & Verify
# Generate QTI Package
examify exam.md -o exam.qti.zip
# Simulate Canvas import
examify emulate-canvas exam.qti.zip4. Import to Canvas
Upload exam.qti.zip to Settings → Import Course Content → QTI .zip file.
📋 Templates
Start with a ready-made template:
| Template | Questions | Best For |
|:---|:---:|:---|
| starter-exam-md.md | 7 | Beginners — one of each question type |
| canvas-ready.md | 21 | Full feature coverage with math & code |
| canvas-validation.md | 9 | Testing all features |
Quarto users: See starter-exam.qmd and canvas-export.qmd.
📦 For Quarto Users
If you use RStudio or Quarto, installing our extension is the best way to work.
# Install the extension
quarto add Data-Wise/examifyThen in your YAML header:
title: "Final Exam"
format:
exam-gfm: default # Generates QTI-ready Markdown
exam-pdf: default # Generates printable PDF
exam:
solutions: false # Hide solutions for students💻 Commands
| Command | Usage | Description |
|:---|:---|:---|
| Convert | examify <file> -o <out.zip> | Convert Markdown to QTI package |
| Verify | examify verify <zip> | Validate QTI structure |
| Emulate | examify emulate-canvas <zip> | Simulate Canvas import |
| Check | examify check <file> | Lint source file for errors |
| Preview | examify <file> --preview | Preview parsed questions |
📚 Documentation
- Getting Started — Install and convert your first exam
- Input Formats — Complete question syntax reference
- Canvas Emulator — Pre-validate before uploading
- Quarto Extension — R/Python integration
- Tutorials — Dynamic exams, VS Code snippets
Built with ❤️ by the MediationVerse Team • Licensed under MIT
