Skip to main content

Prashna

How prashna brings an admin, moderators, participants and a projector into one live session for Q&A and quizzes, and what it produces afterwards

How prashna runs a session with an audience: an admin sets it up, a moderator runs the room, participants join on their phones and the projector shows the room the same state. Questions are asked and upvoted, versioned quizzes are run question by question, and the session ends with ranked questions, quiz results, run reports, attendee profiles and feedback. The infographic source is kept with the image.

A live Q&A and quiz tool for any session with an audience: training, lectures, workshops, town halls, meetups. Prashna (प्रश्न) is Sanskrit for question.

Two core features:

  • Anonymous Q&A. Participants post questions and upvote each other's. The moderator responds in text or out loud. A removed question is hidden from participants and kept for the record.
  • Moderator-run quizzes. Single- or multiple-choice questions, optional images, anonymous answers, results revealed one question at a time, a lobby screen on the projector, and optional live counts while people answer. Quizzes are versioned: editing a quiz never changes the report of a past run.

A projector view for the screen at the front of the room shows the join code, a QR code for the participant link, the top questions, and the current quiz question in step with the moderator.

Install

Choose one of these. Each installs the same prashna command.

One command, on macOS, Linux, or Windows. Works on a machine without Python; it installs uv, which fetches Python if needed.

curl -LsSf https://kvsankar.github.io/prashna/install.sh | sh                  # macOS / Linux
powershell -ExecutionPolicy ByPass -c "irm https://kvsankar.github.io/prashna/install.ps1 | iex"   # Windows

Already have Python 3.11 or newer? Install without uv, using pipx:

pipx install prashna

Or use pip inside a virtual environment:

python3 -m venv ~/.prashna
~/.prashna/bin/pip install prashna          # Windows: ~\.prashna\Scripts\pip install prashna

A plain pip install into the system Python is refused on Debian, Ubuntu, and some other Linux distributions ("externally-managed-environment"); the virtual environment avoids that.

Already have uv? uvx prashna installs and starts it in one step.

Then start it:

prashna                                     # virtual environment: ~/.prashna/bin/prashna

Update with uv tool upgrade prashna, pipx upgrade prashna, or ~/.prashna/bin/pip install --upgrade prashna. prashna --help lists the options: port, data folder, and backups.

First run

prashna serves on http://127.0.0.1:8000 and opens your browser on a one-time page where you choose the admin's username and password. The page works once. After that, sign in to create sessions and write quizzes. Prashna keeps its data in your app-data folder.

Share over the internet

To let people join from their own phones over the internet, start Prashna with a tunnel:

prashna --tunnel cloudflare      # Cloudflare quick tunnel: no account needed
prashna --tunnel ngrok           # ngrok: uses your signed-in ngrok

Prashna starts the tunnel, waits until its public address works, and prints it (Participants join at: https://…). Participant links and the projector's QR code use that address automatically, while you keep using http://127.0.0.1:8000 yourself. Ctrl+C stops Prashna and the tunnel together.

You need the tunnel program once:

  • Cloudflare: install cloudflared (macOS: brew install cloudflared; Windows: winget install --id Cloudflare.cloudflared; Linux: Cloudflare's downloads). No account is needed.
  • ngrok: install it from ngrok.com/download and sign in once with ngrok config add-authtoken <your token>.

On the free plans they differ like this:

Cloudflare quick tunnel ngrok free plan
Account None Required
Address New on every start The same every time
Participants Go straight in See an ngrok warning page once and click "Visit"
Limits 200 requests in progress at once 20,000 requests and 1 GB per month

For a live room, prefer Cloudflare. Every live update makes each participant's page fetch new data, so one session with a large audience can use up ngrok's monthly request allowance.

The address is public while the tunnel runs. Stop Prashna when the session ends.

Roles

Role Page Who gets in
Admin / The person who signed in with the admin password (or an allowed GitHub account). Creates sessions and quizzes.
Moderator /m/<code> The admin who owns the session, or anyone the admin gives the moderator link to, such as a co-host. Runs the room.
Participant /s/<code> Anyone with the session code or QR code. No account; an optional profile.
Projector /p/<code> Anyone. Read-only, for the room's screen.
Quiz library /quizzes The admin. Writes quizzes and reads run reports.

The admin who owns a session can do everything a moderator can, on the same page, plus the session's settings. The moderator link is how the admin hands the room to someone without an admin account.

Documentation

To run Prashna in Docker instead, see the container guide. The production deployment behind nginx is described in the deployment runbook.

License

MIT. See LICENSE.

Status

Prashna runs in production at prashna.sankara.net for a single operator. It is released as a container image. Product ideas that need a decision are listed in the deferred appendix of the specification.

Metadata

Release files for prashna 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for prashna 0.3.0
File Size Uploaded
prashna-0.3.0.tar.gz 91.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for prashna 0.3.0
File Interpreter ABI Platform
prashna-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 189.8 kB

Release files / prashna-0.3.0.tar.gz

Download URL prashna-0.3.0.tar.gz
Size 91.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e3f7b69d428c8557242251bd90a3523f1dd301e773c32de46720b758422375f2
BLAKE2b-256 checksum
How to use checksums
4370782b65674439beddda4af22507db28805a5bee9c93488f196e79e44f0810
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / prashna-0.3.0-py3-none-any.whl

Download URL prashna-0.3.0-py3-none-any.whl
Size 98.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7a5a75e66f13c36a78e18c269468e4f3cce7ea121bb3bd0cf54eeeb1490e10f9
BLAKE2b-256 checksum
How to use checksums
297587eb264aaa47a2d2a71f4646d50d88b76462e6540378f15f2a37de91ae69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page