
はじめのページ。メールアドレス, パスワード を入力してユーザー作成 or ログインでログイン
EmailInput, PasswordInput を Firebase Auth にわたす。返却された credential の uid をユーザーIDとする。
ユーザーデータは Firestore に保存。(v1では実装しない)

ログイン後に遷移するページ。ユーザー情報とランダムマッチを行うボタンがある。
Firestore からのユーザー情報を表示(v1では実装しない)。
"ランダムマッチ" ボタン を押すと gRPCのAPI WordWar.Game(uid) が呼ばれ、ゲーム終了時まで継続する Server Streaming がはられる。
サーバー側では部屋にマッチング(v1では1部屋4人)し、RedisのKVS?を作る。
クライアント側はゲーム画面に遷移する。
[疑問]: マッチングした相手のユーザー情報は GameResponse にはいっていないのか

マッチングが完了すると遷移するページ。60秒間?の間対戦が行われる。(v1では10回発言されたら終わり)
入力フォームはひらがなのみ可。入力されると gRPCのAPI WordWar.Say(uid, message) が呼ばれ, 発言した内容がResponseとして返ってくる。(v1ではしりとりとして有効かどうかを判定しない)
サーバー側では発言内容がRedis KVS に書き込まれ、Pub/Sub によってルームメンバーに周知される。(全員にGameResponseを送る?)
ゲーム終了時、WordWar.Game ストリームが切断され、結果画面に遷移する。

結果画面。ゲームの結果を表示する。
gRPCのAPI WordWar.Result(uid) が呼ばれ、サーバー側ではuidから対戦のスコアを返却する。この際スコアに応じてレーティングが変動する(v1では未実装)。
戻るボタンでホーム画面に遷移。
コミュニケーションはSlack上で, タスク管理はAsanaでやりたい。 1スプリント1週間とし、機能提案から実装、リリースのサイクルを作りたい。
比較的シンプルめのSPAということで以下を参考にしています。 elm-my-spa
認証の部分とホスティングとユーザーデータの保存はFirebaseにより行います。 Firebaseコンソール
CSSフレームワークとして Bulma を用いています。 公式ドキュメントにはHTMLによる例が載っているのでそれを参考に画面を作ってください。なお、HTMLからElmへの変換ツールとして HTML to ElmというVSCodeの拡張機能を利用することを推奨します。