Coder Social home page Coder Social logo

newt239 / gateway-front Goto Github PK

View Code? Open in Web Editor NEW
9.0 2.0 1.0 3.51 MB

frontend of stay status record system for Sakae Higashi School Festival 2022

Home Page: https://gateway.sh-fes.com/

HTML 1.10% TypeScript 98.24% JavaScript 0.66%
react mui typescript react-qr-reader

gateway-front's People

Contributors

newt239 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

hiima

gateway-front's Issues

Chromebookのメモリもかなり弱そう

#67 でAndroidについてはインターバルを30秒まで短くしたが、Chromebookでも5分はもたなそう
しかもこっちは画面がブラックアウトして強制再起動までしなきゃいけないのでかなり深刻
とりあえず2分30秒に変更してみる

カメラの反転

学校配布のChromebookのフロントカメラは左右が逆でQRコードを中心に合わせづらい。

カメラのプレビューエリアのすぐ上に反転ボタンをつける。

ローディングスピナーが表示されなくて良いときに表示される

入退室処理の際にカメラプレビューの場所でカメラを読み込むときにローディングスピナーを表示させているが、スキャン完了後ゲスト情報などが表示された後にカメラをオフにしたときにもスピナーが表示されることがある。
再現ができていないので具体的にどのアクションをすると表示されてしまうかが不明。
ユーザーによってはスピナーは「今まさに読み込みが行われている」と認識しているため、スピナーが表示されることでゲスト情報が表示できているのにもかかわらず非表示になるまで次のアクションをせずに待機してしまう可能性がある。

文実用アカウントで滞在情報ページに遷移できない

スマホ版ではボトムバー最右にあるが何も表示されない、パソコン版ではメニューもない。入れるとすればスキャンページの一番上(「一覧に戻る」の横など)。ただ業務上必ずしもすべての文実委員が必要な機能ではないためメニューは用意しなくても良さそう

ブランチ管理のテスト

実装する必要が機能を明確化するために、ブランチ管理を行う。

方針

基本はdevelopブランチで作業を行う。

大きな機能を実装する際は専用のブランチ(feature/xxx)を切り、完成したらdevelopブランチにマージする。

developブランチは特に問題がないことが確認できればmasterブランチにマージする。

ゲスト照会にQRコードを表示

リストバンド忘れ / 2枚とも紛失した生徒はDBで該当生徒のゲストIDを検索し、ゲスト照会機能を使って表示したQRコードをデジタルリストバンドで読み取らせる

ダークモード実装

まだ優先度は低めだけどいつかはつけたい

講堂とか体育館だと暗い場所で操作しなきゃいけないときもあるはずで、その時背景白は眩しすぎる

MUIベースでやればそこまで対応は手間かからなさそう
Dark mode - Material UI

依存関係の整理

package.json内のdependencesdevDependencesの整理。

テスティング用のライブラリは現在使用していないため一旦アンインストール。

また同時に各ライブラリを最新バージョンにアップデートする。

予約用QRコードの暗号化

現在予約用QRコードは予約IDの文字列をそのまんま使って変換しているが、これだと他の予約用QRコードを容易に偽造できるので、JWTを使って暗号化する。

payloadは以下の形式を取る。

{
  "reservation_id": "RABXXXY"
}

IDの手動入力

当日スキャンする場所によってはカメラがQRコードを読み取りづらい可能性がある。このため予約IDやゲストIDを手動で入力できるオプションを作る

エラーログの収集

端末上でエラーが発生した時、

  • ga4でイベントを記録
  • Discordのチャンネルでエラーメッセージを送信

iOSでボタンが押せない・カメラが起動しない

ヒートマップ実装

実装方針の詳細未定

Leaflet.js

公式サイト

背景に校内図をsvg(ラスター形式でも可能)で敷き、展示のある場所に色をプロットしていく。

全部svg (React Componentの組み合わせ)

自由度は高いがコンポーネント同士の配置の位置調整が難しそう

heatmap.js

公式サイト

表示がかなり「「ヒートマップ」」って感じだけど、ちょっとイメージとは違う

権限不明アカウントでログイン後画面真っ白

react-dom.production.min.js:216 Error: Minified React error #321; visit https://reactjs.org/docs/error-decoder.html?invariant=321 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
    at Object.oa (react-dom.production.min.js:156:258)
    at t.useContext (react.production.min.js:22:273)
    at me (index.js:764:43)
    at Ce (jotai.ts:25:24)
    at Extra.tsx:16:7
    at Dl (react-dom.production.min.js:262:359)
    at t.unstable_runWithPriority (scheduler.production.min.js:18:343)
    at Xi (react-dom.production.min.js:122:325)
    at Bl (react-dom.production.min.js:261:308)
    at xl (react-dom.production.min.js:243:50)

リロードすると直る

展示情報を取得できない

image

各展示用アカウントでログインした際スキャンページで各展示についての情報(展示名、上限人数など)を取得できていない。 exhibit_idundefinedになっているのが原因。react-routerのuseParams()でパスから取得しようとしているがうまく行っていない。

Androidのメモリリークが早い

5分じゃ持たなそうなのでAndroidのときだけインターバルを30秒まで短くする。
Pixel 4a では40秒程度しかもたなかった(よりスペックが低いAndroid端末でもっと長くもったから単純にスペックの問題ではなさそう?)

Screenshot_20220827-174739

PWA対応

6/12までの実装を目指す

TODO

  • オフライン対応
  • アイコン画像
  • PWAのインストール方法を示した図を用意

ログイン画面の通信エラー

バックエンドとの通信に失敗すると「サーバーからの応答がありません。端末がネットワークに接続されているか確認してください。」というメッセージが表示される。ただ実際サーバーが落ちることなんてほぼなく、このエラーが表示される原因はChromebookに設定されているプロキシに、起動直後はログインできておらず、学校のWiFiに繋げられていないことにある。このプロキシへのログインは新しくサイトを読み込んだときに発生するので、サーバーステータスを表示するuptimerobotへのリンクへ誘導するダイアログを表示するようにする。

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.