Skip to content

Repository files navigation

Quizzly

Live multiplayer quiz, no login required

Host lobby with the game PIN, QR code and players joining

What it is

Quizzly is a live quiz game built on the Frappe Framework. A host puts the game PIN on the big screen, players join from their phones with the PIN or by scanning the QR code, and nobody needs an account.

Gameplay is server-authoritative. The correct answer never reaches a player's device before the question closes, scores are computed from a server-set deadline, and every submission is validated against the server's own view of the game.

Screenshots

Joining from a phone

Join screen with PIN, nickname suggestions and avatar picker

A question, live on both screens

Host screen showing a question, countdown and answer countPlayer screen showing four coloured answer buttons

Between questions

Correct answer revealed with answer distribution and top five leaderboard

Final results

Podium with the top three players and the full leaderboard

Writing a quiz

Quiz editor with question text, four options and the correct answer marked

Light and dark

Player question screen in dark theme

Features

  • Guests join with a PIN or QR code, no account and no app install
  • Live lobby: names appear as players join, host can lock it or kick anyone
  • Questions land on every device at once, with a per-question timer
  • Speed-scaled scoring with streak bonuses, in the style of the games it borrows from
  • Answer distribution, correct answer reveal and top-five leaderboard between questions
  • Top-three podium at the end, plus the full ranking
  • Avatar picker and nickname suggestions for players
  • Light and dark theme, everywhere
  • Quizzes are written in the app, no Desk trip needed

Under the hood

  • Frappe Framework for the backend, DocTypes and permissions
  • Vue 3 and frappe-ui for the single-page app
  • Socket.IO to push every state change to hosts and players
  • Redis for the hot session state each answer is validated against
  • RQ for the single shared ticker that drives every live game loop

Development setup

  1. Set up a bench by following the installation steps and start the server with bench start.

  2. In another terminal, from your bench directory:

bench get-app https://github.com/gajjug004/quizzly --branch develop
bench --site your-site.localhost install-app quizzly

The app is served at /quizzly on your site. For frontend work, run the Vite dev server against it:

cd apps/quizzly/frontend
yarn install
yarn dev

Testing

bench --site your-site.localhost set-config allow_tests true
bench --site your-site.localhost run-tests --app quizzly

Contributing

This app uses pre-commit for code formatting and linting. Please install pre-commit and enable it for this repository:

cd apps/quizzly
pre-commit install

Pre-commit is configured to use ruff, eslint, prettier and pyupgrade.

plan.md holds the build plan and architecture, specs/ holds the spec for each phase, and progress.md logs what was actually built.

License

MIT

About

Live multiplayer quiz app on Frappe. Guests join by PIN or QR, no login, server-authoritative gameplay.

Topics

Resources

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages