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.2.tar.gz (87.6 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.2-py3-none-any.whl (66.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: quizmd-2.4.2.tar.gz
  • Upload date:
  • Size: 87.6 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.2.tar.gz
Algorithm Hash digest
SHA256 64e035cdca98c6a047babd24c0f2745d36a546a93032374927d6e09199b021a4
MD5 ba0e85b4077bff6651f0095bc678af89
BLAKE2b-256 f88484378113efb3c5aedc597a3f347137fcd4b14b591628b57653bd3e5b66f1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quizmd-2.4.2-py3-none-any.whl
  • Upload date:
  • Size: 66.6 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fa269bd71e4c8ca84a9e9b798d57e89052daf1c3db029c43f1aae3c560048b62
MD5 d9c69197a19d3a520d18ac88a1b1fa58
BLAKE2b-256 ad1be27827cd016031e5c0d974b8adc48cbd2d631ff85016d18e353e9d1bea8f

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