/brainstorm-app

Team Brainstorming Tool using WebSocket and Express

Primary LanguageJavaScript

README

Introduction

This is a prototype on a brainstorming workflow my team worked on in DESCI 502. The goal is to impose certain restrictions on the brainstorm activity to prevent Design Fixation from happening in an interdisciplinary team setting.

brainstorm-app-poster

PDF download

Technical Aspect

This application was built using Node.js and uses primarily Express and WebSocket to control client view. WebSocket was used because this app is meant to be used in a team brainstorm session where everyone is present, so a way to ensure synchronized views on everyone's devices was needed.

  • Client Side
    • config ./client.config.js
    • code
      • ./frontend/js
  • Server Side
    • config ./server.config.js
    • code
      • ./server-http.js
      • ./server-ws.js
      • ./websocket-handlers/

How to install

Get Node.js first, then in the cloned project root, type:

$ npm install

This will install all dependencies in the folder.

How to run

At the project root, type:

$ npm run start

This will compile the .scss files, bundle/minimize .js files, and start the server on port 80. At this point, you should be able to type localhost:80 in your browser to see the login screen. If you would like to temporarily make this app public, after running $ npm run start in one command line instance, open another command line window and run $ npm run serveo, this uses serveo to create a temporary public address at http://brainstorm.serveo.net for other people to connect to your device (It will say https://brainstorm.serveo.net, but websocket connection won't work if the page is loaded over HTTPS)

Analysis

After the results are collected, the console will print out a summary of design fixation score for the session. If you'd like to see the same summary later, at the project root, run $ node analysis.js <name-of-the-json-file> without the .json suffix (For example, if the output's filename 123.json, run $ node analysis.js 123)