投票アプリ
無料のコードキャンプチャレンジ
Heroku App -https://neckers-voteapp.herokuapp.com
このアプリはMern Stackに組み込まれています。 Mongodb、Node、Express、React、React Router、Redux、Socket.io、Material-UI、Googleチャートを使用します。 UIは、モバイル、タブレット、デスクトップで使用できます。
注記:
- サーバーとクライアントのコンポーネントは同型です。
- 認証はCookieではなく、クライアント(LocalStorage/Redux Store)とサーバーのミックスを使用し、socket.io、チェック。
- すでに投票された投票はLocalStorageで救われています
ユーザーストーリー
- 認証されたユーザーとして、私は投票を維持し、後で戻ってそれらにアクセスすることができます。
- 認証されたユーザーとして、私は自分の投票を友達と共有することができます。
- 認証されたユーザーとして、私は自分の世論調査の集計結果を見ることができます。
- 認証されたユーザーとして、もう欲しくないと判断した世論調査を削除できます。
- 認証されたユーザーとして、私は任意の数の可能なアイテムを含む投票を作成できます。
- 無許可または認証されたユーザーとして、私は全員の投票を見て投票することができます。
- 認証されていないまたは認証されたユーザーとして、チャート形式の世論調査の結果を見ることができます。 (これは、chart.jsまたはGoogleチャートを使用して実装できます。)
- 認証されたユーザーとして、投票のオプションが気に入らない場合は、新しいオプションを作成できます。
バグですか?いいえ、それは機能です!
OK、それらは実際には機能ではありませんが、実際には良くないアクションがいくつかありますが、この課題のために、私は気にしません。
- ローカルストレージをクリアしたり、別のデバイスからアクセスできる場合(または、Incognito Modeなど)、何度も投票できます。
- ええ、投票を追跡するためには、サーバー側にいくつかの情報を保存する必要があり、ログインなしでユーザーを使用すると、それらをチェックするために本当に努力をしなければなりません。だから.. DBはMLABを搭載したサンドボックスにあり、私はそれをもっと強調したくありません。
- 世論調査の後、オプションを編集または削除することはできません。
- いいえ、できません。これらのアクションは、ユーザーストーリーにはありませんでした。
- 複数のログインができません。
- うん、ログインするたびに、クライアントとサーバーの両側で別の
session_idを取得します。
- 電子メール、ニック、パスワードなど、個人データを編集できません
- いいえ、できません。これらのアクションは、ユーザーストーリーにはありませんでした。
- 好みを変えることはできません
- はい、私はこの機能が特別な方法で好きではありませんが、いくつかのセキュリティ上の理由でUNDOアクションを実装しないことにしました。
process.env
- Mongouri :Mongodb Serverで認証するためのクエリ
mongodb://<dbuser>:<dbpassword>@ds119508.mlab.com:19508/neckersbox - node_env :たとえば、
production 。注:これは、サーバーとクライアントの間で同じでなければなりません。
スクリプト
このアプリをコンパイルまたは実行するには、Gulpおよび/またはnpmを使用します。
- ビルド:
gulp build - ウォッチ:
gulp watchまたはnpm run watch - クリーン:
gulp clean - START SERVER :
gulp startまたはnpm run start-server注:通常はstart-serverを非表示コンソールメッセージを表示するには、 npm run start-server-debugする必要があることを示します。
mongodb構成
適切に機能するには、このアプリケーションには2つのコレクションを備えたMongoDBデータベースが必要です。
- 署名済みユーザーを保存するための投票_users
- ユーザーの世論調査を救うための投票_polls