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.1.tar.gz (84.9 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.1-py3-none-any.whl (64.4 kB view details)

Uploaded Python 3

File details

Details for the file quizmd-2.4.1.tar.gz.

File metadata

  • Download URL: quizmd-2.4.1.tar.gz
  • Upload date:
  • Size: 84.9 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.1.tar.gz
Algorithm Hash digest
SHA256 19e748ce4866b6f1d4971673d95f1567492645f18d5a39fada1a464f6266cb47
MD5 982c0ac8500bf5c03a6c1bf99294654b
BLAKE2b-256 2491b992324fc51768079d4c2969e004a9928ba4fb15e84692cfc4e4aa54c4ac

See more details on using hashes here.

File details

Details for the file quizmd-2.4.1-py3-none-any.whl.

File metadata

  • Download URL: quizmd-2.4.1-py3-none-any.whl
  • Upload date:
  • Size: 64.4 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9eeb1ee48cff5f9f402606207babf41dedc01767834718fd3a27dc6932f12b52
MD5 00050ef9668dd2d155c6c2de13bc7d38
BLAKE2b-256 0adac80f08a016a42b6af031859b02d140029312ebe6fc2c98622d1d7c50a647

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