- スケジュール組みサービス「くみくみ」
- サーバー実装は、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 に保存し、再利用する
- 会社名、姓名、メールアドレスは項目名と入力欄の3段で表示し、すべての項目に記載がないと登録できない
- 管理画面は、日付毎に囲み、時間、会社名、姓名、メールアドレスの順に並ぶ
- 管理画面の下に、登録、キャンセルの履歴を日時と共に表示する
- 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/schedules、data/bookings、
data/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を使用します。