GithubHelp home page GithubHelp logo

damoclark / buzzer.click Goto Github PK

View Code? Open in Web Editor NEW
8.0 8.0 3.0 7.73 MB

Buzzer.click is an online synchronous quiz game that implements a fun ‘buzzer’ type system, such that during a contested response to a question, the first person to ‘buzz’ is identified and thus has first opportunity to answer.

JavaScript 96.02% HTML 3.83% CSS 0.15%

buzzer.click's People

Contributors

damoclark avatar nick2170 avatar pleb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

buzzer.click's Issues

Implement FSM for host UI - basic form

Implement FSM for host UI

  1. Add to web project (browserfiy)
  2. Configure and add base states
  3. (If missing) Add unit test folder for browser/client BDD tests
  4. (If missing) Add NPM script to execute browser/client BDD tests
  5. Add tests to ensure behaviour matches and enforces expected state transitions

Implement FSM for server - basic form

Implement FSM for server

  1. Add via NPM to project
  2. Configure and add base states
  3. Add tests to ensure behaviour matches and enforces expected state transitions

finite state machine transition diagram

Reduce private field accessing

A lot of the unit test currently access private fields to conduct testing. A clean up effort is required to reduce this.

Index file

Hey there,
This is awesome and I would love to use with my students. I was wondering am I missing the index file?

Dumping/Loading server configuration to/from secondary storage

Implement the ability for the server process to write the currently running sessions to disk, when terminating, or otherwise receiving an unhandled signal (not sure about Windows here).

On restart, check for the existence of such a file, and depending on its modification timestamp, reload all the sessions into the process, so that in-progress 'games' can continue.

UI form HCI fixes

Human Computer Interaction fixes:
At the moment users need to click on the modal buttons to continue. Need to modify the buttons to submit and bind in js to the .submit event.
Also need to put focus on the first form input on pages/modals

Change UI for creating a team session

Here is a suggestion for team creation UI.

Rather than have 2 text boxes, and instructions on how to enter information, break it down into two decisions.

Firstly, they choose whether to specify the number of teams, or the size of the teams. Then depending on that choice, only the appropriate/relevant 'input' box appears. So if 'Number of teams' was chosen, then the box: 'max players per team' would be shown, and not 'Number of Teams'.

Thoughts?

Suggestion for team creation.

Ability to 'theme' the interface

Being able to customise the interface of the UI, from a server configuration perspective, or even a use perspective would be useful.

Make it colourful and playful for younger children, or perhaps match the branding of an education institution.

Implement FSM for contestant UI - basic form

Implement FSM for contestant UI

  1. Add to web project (browserfiy)
  2. Configure and add base states
  3. (If missing) Add unit test folder for browser/client BDD tests
  4. (If missing) Add NPM script to execute browser/client BDD tests
  5. Add tests to ensure behaviour matches and enforces expected state transitions

Implement game creation UI

Implement the game creation UI

This page will build the game create URL and allow the user to active it

  1. Add URL game create handler
  2. Implement page

Complete games classes

The game classes need a little TLC.

  1. Ensure structure will work with specs
  2. Format code and bring up-to-standard
  3. The FSM will interact with classes - keep that in mind
  4. Add tests to ensure behaviour matches specification expectations

classes and data structures
classes and data structures2

Remove individual scores from team in shared screen

With team-based play, to reduce negative experiences for learners who perform poorly in their team, remove individual scores from the team-based game. So only the team scores are shown.

share_session

In a later revision, add an option so host can choose to include or omit (by default) individual scores.

Introduce base class for client request messages

All client request classes, as a minimum, must supply a session id. In addition, many will be required to supply a contestant id or host id. Currently, all client request message implement their own properties/fields for these. To reduce the DRY violation, it is recommended that a base class be created to support these two properties and for existing code to be refactored to make use of it.

Auto assigned team name list

When the server adds a team, it would be nice to auto allocate a team name from a list contained within the application. By doing this it would mean a team will always have a name and may save the host creator time if they decide to disable team name editing.

Separate message classes

Message classes fall into the following categories:

  1. Request
  2. Response
  3. Notify

It would be nice if they were separated physically in the source

Server Configuration Options Required

Here is an initial list of configuration options for the server that should be considered for inclusion (after completion of assessment).

  • Server IP Address to Bind to
  • Server Port to bind to
  • Non-privileged user to run as when started as root user (or whatever is equivalent on Windows)

Server Admin Page

The server should have an 'admin' type page that is password protected such that the site can be managed. This page would

  • show the currently running sessions, and other operational statistics
  • have the ability to shutdown or restart the server
  • have the ability to terminate specific sessions
  • block IPs
  • who knows what else

Handle client willful disconnect

Client's may want to disconnect for various reasons such as going home early. Need to handle a client (Contestant) "SESSION_COMPLETE" message to only drop that participant.

Server Configuration Options

A future feature

The server needs to be configurable at start up.

Conventional methods to do this include

  • Command line args
  • Configuration file
  • Environment Variables

In all likelihood, there will be an npm module that will cater to this, perhaps even all of them, and in a OS-independent way, for the Windows folk.

I'll add a separate issue for configurable options necessary.

Complete server/client messages

Complete the server/client messages

  1. Add all required messages
  2. Add JSON schema for each message
  3. Add tests to ensure schemas matche expected behaviour

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.