Skip to content

Repository files navigation

kumikumi

  • スケジュール組みサービス「くみくみ」

仕様

  • サーバー実装は、DenoのJavaScript
  • データは、種別毎のディレクトリでJSON保存
  • スケジュール作成者が、1スロットの分数、スケジュール可能日時を複数登録する
    • 開始時間の初期値は10:00、終了時間の初期値は12:00とする
    • スケジュール作成後のページはトークン付きのURLとして、ブックマークできるようにする
    • 管理画面のタイトルは、「設定したタイトル」に加えて「 - くみくみ管理画面」とする
    • ユーザー向けのURLは、新規ウィンドウで開くボタンと、URLコピーボタンを設置する
    • 1スロットの分数のデフォルトは slotTime で分数で指定されたものを使用する(初期値は30とする)
    • スケジュール作成者は、登録されたスケジュールを作成時に生成される固有URLから確認できる
  • ユーザーは空き時間を選択して、会社名、姓名、メールアドレスで登録する
    • 会社名、姓名、メールアドレスは項目名と入力欄の3段で表示し、すべての項目に記載がないと登録できない
      • 会社名、姓名、メールアドレス入力欄は最初から表示しておく
      • この時間で予約を押すと、指定したメールアドレスから確認メールが送られること記述する
    • 姓名は、姓と名、横並びで2つの入力フォームとし、会社名、メールアドレスの入力フォームと横幅を合わせる
      • 文字入力フォームの文字サイズは最低16pxとする
      • スマホでも入力しやすくするため、フッターを長くとり、次の入力欄への遷移を容易にする
    • 案内文は「希望時間帯を選んでください」
    • 登録後、キャンセル用のURLが発行され、ユーザー意思でキャンセルができる
      • キャンセル済み画面に「別日程で予約を取る」ボタンを追加
      • メール送信用のURLのベースは、config.json の baseURL で指定されたものを使用する
    • 登録後 https://github.com/code4fukui/Gmailer を使って、キャンセルURL付きで確認メールをおくる
      • Gmailerのメールアドレス、App password を config.json から読み込んで使用する
      • 確認メールのテンプレートは mail-template.txt を使用する
      • メール送信が失敗した場合は、予約登録ができない
      • メール送信の失敗は data/log/err.log に追記する
      • 「予約」ボタン押すと二度押しできないようにし、完了または失敗するまで処理中アニメーションを入れる
    • 誰かにすでに登録されたスロットは以後、選択不可となる
      • 空きスロットは日別に囲み、すでに埋まったスロットはグレーアウトし選択不可とする
    • 選択して登録する前に埋まった場合は、再度選択するようにユーザーに案内する
      • 一度入力した会社名、姓名、メールアドレスは localStorage に保存し、再利用する
  • 管理画面は、日付毎に囲み、時間、会社名、姓名、メールアドレスの順に並ぶ
    • 管理画面の下に、登録、キャンセルの履歴を日時と共に表示する
  • pubilc/logo.png を全画面に配置
    • config.json の titleLogo に指定があれば、それをロゴとして使う
  • サービスカラーは config.json の keyColor に指定があればそれを使う
    • デフォルトは緑

依存ライブラリ

起動

cp config.example.json config.json
# config.json にGmailアドレスとApp passwordを設定
deno task start

ブラウザで http://localhost:8001 を開きます。データは data/schedulesdata/bookingsdata/history にJSONで保存されます。開発時は deno task dev、テストは deno task test で実行できます。

メール送信エラーは data/log/err.log に追記されます。

確認メールの本文は mail-template.txt で編集できます。利用可能な差し込み項目は {{title}}{{date}}{{company}}{{familyName}}{{givenName}}{{cancelUrl}} です。認証情報を含む config.json はGit管理対象外です。 titleLogo にはロゴ画像のパスまたはURLを指定できます。未指定時は /logo.png を使用します。 keyColor にはCSSで利用可能な色を指定できます。未指定時は緑(#168458)を使用します。 確認メール内のキャンセルURLには、baseURL に指定した公開URLを使用します。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages