Skip to main content

Run markdown quizzes in the terminal

Project description

quizmd

quizmd is a terminal quiz app for:

  • Markdown MCQs (single/multiple)
  • Imposter quizzes (spot misleading options)
  • Essay quizzes (AI rubric scoring)
  • Online room modes (compete/collaborate/boxing)

Install

Recommended:

pip install quizmd

Update to latest:

pip install -U quizmd

From GitHub (latest repo state):

pip install "git+https://github.com/steliosot/quizmd.git"

Check install:

quizmd --version

Quick Start

Create starter files:

quizmd init

This creates:

  • hello-quiz.md (single + multiple MCQ)
  • hello-imposter.md (imposter mode)
  • hello-essay.md (essay mode)
  • QUIZ_GUIDE.md (quick commands)

Run starters:

quizmd --validate hello-quiz.md
quizmd hello-quiz.md

quizmd --validate hello-imposter.md
quizmd hello-imposter.md

quizmd --validate hello-essay.md
export GEMINI_API_KEY="your_key_here"  # or OPENAI_API_KEY / ANTHROPIC_API_KEY
quizmd hello-essay.md

Modes (What + How to Start)

1) Single / Multiple (Local MCQ)

  • What: classic MCQ practice with timers.
  • Start:
quizmd hello-quiz.md

2) Imposter (Local MCQ + Distractors)

  • What: answer normally and flag misleading options.
  • Start:
quizmd hello-imposter.md

3) Essay (AI Rubric Grading)

  • What: write in editor, get rubric-based score + feedback.
  • Start:
quizmd hello-essay.md

4) Room: Compete (Online)

  • What: fastest correct answers win points.
  • Start room:
quizmd room --create --mode compete --quiz hello-quiz.md

5) Room: Collaborate (Online)

  • What: each question has a discussion phase (chat) then a voting phase.
  • Team must still reach full consensus to score.
  • Start room:
quizmd room --create --mode collaborate --quiz hello-quiz.md

6) Room: Boxing (Online Teacher/Student)

  • What: live chat Q&A, teacher can score with /score <0-100>.
  • Start room:
quizmd room --create --mode boxing --quiz hello-quiz.md

Join any room:

quizmd room --join <room-name> [--token <room-token>]

Room quiz requirement:

  • In online room modes, each question Time/time_limit must be 5 seconds or higher.
  • For JSON room quizzes, optional discussion_time (seconds) controls collaborate chat phase per question.

quizmd init Coverage

Yes, quizmd init covers all mode types:

  • MCQ single/multiple via hello-quiz.md
  • Imposter via hello-imposter.md
  • Essay via hello-essay.md
  • Room modes by using hello-quiz.md with --mode compete|collaborate|boxing

Essay Keys (Essay Mode Only)

MCQ quizzes do not require API keys.

Supported keys:

  • GEMINI_API_KEY
  • OPENAI_API_KEY
  • ANTHROPIC_API_KEY

Auto provider order:

  1. Gemini
  2. OpenAI
  3. Anthropic

Mac/Linux example:

export GEMINI_API_KEY="your_key_here"

Windows PowerShell example:

$env:GEMINI_API_KEY="your_key_here"

Validate Any Quiz

quizmd --validate quizzes/harry-potter-quiz.md

Theme

quizmd --theme auto quizzes/harry-potter-quiz.md
quizmd --theme light quizzes/harry-potter-quiz.md
quizmd --theme dark quizzes/harry-potter-quiz.md

Notes

  • Boxing mode requires a boxing-capable room server revision.
  • If cloud server is older, quizmd shows a friendly unsupported-mode message.
  • Press Ctrl+C at any time to exit.
  • Each multiple-choice question must have at least 2 non-empty options.
  • If your question text includes markdown bullet lines, add an Options: line before answer choices to disambiguate parsing.

Development

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m unittest discover -s tests -q

Multiplayer server local dev note:

  • Use Python 3.13 in multiplayer/server (python3.13 -m venv .venv), since Python 3.14 may fail dependency builds (pydantic-core).

Community

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quizmd-2.4.3rc1.tar.gz (96.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quizmd-2.4.3rc1-py3-none-any.whl (73.1 kB view details)

Uploaded Python 3

File details

Details for the file quizmd-2.4.3rc1.tar.gz.

File metadata

  • Download URL: quizmd-2.4.3rc1.tar.gz
  • Upload date:
  • Size: 96.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quizmd-2.4.3rc1.tar.gz
Algorithm Hash digest
SHA256 1e2dc0105e66d6e74d5bd16450a6eb0dcef1f15d0d236282122fcb8f4d65eb03
MD5 99b0c99517a5a5232263fd3e41048f17
BLAKE2b-256 26dcff7d7b0844ca6f2cc2211f5d8e1f56a70e48e3d6cc95f5c348080c2e6bfd

See more details on using hashes here.

File details

Details for the file quizmd-2.4.3rc1-py3-none-any.whl.

File metadata

  • Download URL: quizmd-2.4.3rc1-py3-none-any.whl
  • Upload date:
  • Size: 73.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quizmd-2.4.3rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 fa1aa7ea7db9ca026e327b9b2348e785e70a9c76f7e35e9c9867b436c46d5335
MD5 7664c8d1d8fb64481aef8404cd9766c9
BLAKE2b-256 4821497cfb15459b2b822eb10741f6458aaabaf1892c1299b65f1459cad228af

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page