LTのイベントのために開発された、世界一ゆるい投票システム「YVY」です。 node.js上で動作します。
投票者は4つのボタンを選んで何度でも投票可能です。イベントの盛り上がりに合わせて何度でも投票ください!
ボタンの内容はフルカスタマイズが可能です。 また、投票結果をリアルタイムで確認する画面を用意しています。
YVYは「yurui vote yarouze」の略称です。
左が投票画面、右が投票結果確認画面です。 例えば「やばい!」「かっこいい!」みたいなボタンを主催者が設定し、投票者はそれをリアルタイムで投票します。 その結果をアニメーションを交えて投票結果確認画面で見ることができます。
双方の画面はシンプルなhtmlで用意されているため、大掛かりなシステム構築は不要です。 YVYを起動し、htmlにアクセスすれば投票システムがスタートできます。
投票画面は以下のURLです(index.htmlとして用意されているため、URLだけでアクセス可能です)。 LT会場で各参加者のスマホやPCなどから開くことを想定しています。
<URL>
投票結果確認画面は以下のURLです。
<URL>/monitor.html
投票があれば、リアルタイムで文字が表示され、グラフが増加します。 コントロール画面で登壇者を変更すると、それに合わせてグラフも変更されます。
コントローラ画面は以下のURLです。
<URL>/controller.html
- 結果のダウンロードは、CSVかJSONで全データをダウンロード可能です。グラフ化の機能はありません。他のツールで行ってください。
- 投票結果のリセットをクリックすると、全データがリセットされます。誤ってリセットしないようにご注意ください
node.jsに依存しています。 その他の依存関係は特にありません。
node.jsが動作する環境で動作可能です。
以下のファイルが設定ファイルです。主催者は以下のファイルを編集して投票カテゴリ、登壇者の設定を行ってください。 内容についてはファイルを確認してください。
/config/default.json
以下のコマンドで起動が可能です。
node bin/www
主催者は、投票画面のhtmlを参加者に何かしらの手段で伝えて投票できるようにしてくださいLT
コントローラ画面(/controller.html)で登壇者を切り替えることが可能です。切り替えた場合、投票画面に通知されます。
投票結果もコントローラ画面から取得することができます。
(※) 数十人以上の規模での動作は確認されていません。動作確認の上、お使いください。
- node.jsをインストールします
- 本プロジェクトを任意のディレクトリに展開します。
- 以下コマンドを実行します。
npm install
- 以下コマンドで起動し、 'http://localhost:3000' にアクセスして動作を確認してください。
node bin/www
- ポートの変更は、環境変数
PORT
を変更することで可能です。
set PORT=80
などを起動前に指定してください。
また、package.jsonに指定するなどの方法もあるため、詳しくは調べてみてください。
- 投票結果をグラフ化する機能は未実装です
- jQueryから他のフレームワークに移行予定です
- 現状、毎秒のポーリングでサーバの状態を取得しています。Socket.ioなどのサーバプッシュが可能な仕様に修正を行うことを検討しています。
- クライアント、サーバ共に共通化の余地が大きいため、リファクタリングの必要があります。