レンタルスペース予約のシステムをつくった

レンタルスペース予約のシステムを作った

いろいろとDjangoがらみの話を書いていましたが、やっと本番運用が始まるので。

以下のようなシステムを作りました。

Atelier 5-25-6

仲間内で運営しているレンタルスペースの予約用システムです。

環境

フレームワークDjango、Bootstrap4、jQuery サーバ:AWS EC2 DB:MySQL

機能

  • スペースの予約登録

時刻や用途、支払方法などを設定し、予約登録が可能です(当たり前)。

予約のリクエストがあった際には、メールアドレスにユニークなURLを送りつけて、そのURLを踏むことで本予約として受け付ける形式にしています。

あまり会員登録などはさせたくなかった反面、不正な予約がたまりすぎて欲しく無いなというところもあり、そんなフローにしています。

DjangoでGoogle Calendarへアクセス① - Livegram

DjangoでGoogle Calendarへアクセス② - Livegram

ここらへんでも触れていますが、予約を入れたらGoogle Calendarに勝手に入るので見ればわかり、

逆に都合の悪い日や、このシステムを介さない予約はGoogle Calendar側に予定を入れてしまえば同期されるため、バッティングを防げる仕組みにしています。

不正予約防止の一貫。入力の際にreCaptchaを噛ませてます。

  • Slackへの予約があった際の通知

利用者の方がメールに送られたURLを踏んだ時点(本予約が成立した時点)でSlackへ予約が入った通知をします。

その通知をみて、詳細な連絡を行い実際に使ってもらう、という流れになります。

  • クレジットカード決済

DjangoでStripe決済 - Livegram

ここでも触れていますが、予約が入ったあと決済を行うような仕組みも実装しました。

クレカ決済を選択した場合は、飛んでくるメールが他の決済と異なるものとなり、決済用URLが表示される形です。

そのURLを踏んでから決済を行うと、Slackに通知が飛んでくる感じです。

あと、これに付随して金額計算のロジックも組みましたが、当然「営業時間外」という概念や「30分単位は切り上げ」などの概念もあるので、ちょっとそこは面倒でした。

作ってみて

必要だったので作ってみたのですが、開発期間は約2.5ヶ月(4~6月上旬が中心、6月後半〜8月は諸事情あり一時停止)。

土日を3〜4時間ずつくらい当てたような感じです。結構かかったな。

中身としては普通に登録・リスト表示するだけなのですが。

追加機能の予定

レンタルスペース貸しなので、スマートロックとも連携できれば強いです。予約が入ったら、管理画面にログインして、ボタン押したら鍵が発行できる、みたいな。

それを達成できそうなスマートロックはおそらくSESAMEかなと。今はQrioで運用しているので、買い替えが必要です。

買い替え代金をこのレンタルスペースが稼いでくれたらな、とか思います。