レンタルスペース予約のシステムをつくった
レンタルスペース予約のシステムを作った
いろいろとDjangoがらみの話を書いていましたが、やっと本番運用が始まるので。
以下のようなシステムを作りました。
仲間内で運営しているレンタルスペースの予約用システムです。
環境
フレームワーク:Django、Bootstrap4、jQuery サーバ:AWS EC2 DB:MySQL
機能
- スペースの予約登録
時刻や用途、支払方法などを設定し、予約登録が可能です(当たり前)。
予約のリクエストがあった際には、メールアドレスにユニークなURLを送りつけて、そのURLを踏むことで本予約として受け付ける形式にしています。
あまり会員登録などはさせたくなかった反面、不正な予約がたまりすぎて欲しく無いなというところもあり、そんなフローにしています。
- スペースの予約をGoogle Calendarと同期
DjangoでGoogle Calendarへアクセス① - Livegram
DjangoでGoogle Calendarへアクセス② - Livegram
ここらへんでも触れていますが、予約を入れたらGoogle Calendarに勝手に入るので見ればわかり、
逆に都合の悪い日や、このシステムを介さない予約はGoogle Calendar側に予定を入れてしまえば同期されるため、バッティングを防げる仕組みにしています。
- Google reCaptcha V3
不正予約防止の一貫。入力の際にreCaptchaを噛ませてます。
- Slackへの予約があった際の通知
利用者の方がメールに送られたURLを踏んだ時点(本予約が成立した時点)でSlackへ予約が入った通知をします。
その通知をみて、詳細な連絡を行い実際に使ってもらう、という流れになります。
- クレジットカード決済
ここでも触れていますが、予約が入ったあと決済を行うような仕組みも実装しました。
クレカ決済を選択した場合は、飛んでくるメールが他の決済と異なるものとなり、決済用URLが表示される形です。
そのURLを踏んでから決済を行うと、Slackに通知が飛んでくる感じです。
あと、これに付随して金額計算のロジックも組みましたが、当然「営業時間外」という概念や「30分単位は切り上げ」などの概念もあるので、ちょっとそこは面倒でした。
作ってみて
必要だったので作ってみたのですが、開発期間は約2.5ヶ月(4~6月上旬が中心、6月後半〜8月は諸事情あり一時停止)。
土日を3〜4時間ずつくらい当てたような感じです。結構かかったな。
中身としては普通に登録・リスト表示するだけなのですが。
追加機能の予定
レンタルスペース貸しなので、スマートロックとも連携できれば強いです。予約が入ったら、管理画面にログインして、ボタン押したら鍵が発行できる、みたいな。
それを達成できそうなスマートロックはおそらくSESAMEかなと。今はQrioで運用しているので、買い替えが必要です。
買い替え代金をこのレンタルスペースが稼いでくれたらな、とか思います。