Webアプリ開発

店舗向けオンライン
予約システム開発

複数店舗の空き枠管理・事前決済・リマインド通知を備えた予約システムを構築。

オンライン予約システムの予約画面

プロジェクト概要

複数拠点を展開するリラクゼーションサロン(※サンプル)を想定した、オンライン予約システムの設計・実装を担当しました。それまで電話とメールで受けていた予約をWeb上で完結させることを目的に、店舗・スタッフ・メニューの組み合わせから空き枠を算出し、その場で予約が確定する仕組みを一から構築しています。

利用者側の予約フォーム、店舗スタッフが使う予約台帳、本部が全店舗を横断して見る管理画面の3つの画面を用意。予約時の事前決済にはStripeを採用し、前日のリマインド通知までを自動化しました。

担当した主な機能

  • 店舗・スタッフ・メニュー別の空き枠算出と予約カレンダー
  • 予約フロー(新規 / 会員・変更・キャンセル)
  • Stripeによる事前決済・店頭支払いの選択制
  • キャンセルポリシーに応じた返金処理(Refunds API)
  • 予約確認・前日リマインドのメール/SMS通知
  • 店舗スタッフ向け予約台帳(当日一覧・電話予約の代理登録)
  • 営業時間・定休日・スタッフシフトの登録と枠への反映
  • 本部向け管理画面(複数店舗の予約状況・稼働率の一覧)
店舗スタッフ向けの予約台帳画面とシフト設定画面

使用技術・ツール

フロントエンドはNext.js(App Router)+ TypeScript、UIはTailwind CSSで構築しました。バックエンドはNode.jsで実装し、データベースはPrisma + PostgreSQLを使用。予約枠は日時・店舗・スタッフの組み合わせで一意になるよう制約を設け、同時アクセス時の二重予約をデータベース側でも防いでいます。

決済はStripeのPayment Intentsで与信・確定を分離し、キャンセル時はRefunds APIで返金。決済結果はWebhookで受け取り、署名検証を行ったうえで予約ステータスへ反映します。リマインド通知は定期実行ジョブから配信し、ホスティングはVercel、デプロイはGitHub Actionsで自動化しました。

工夫した点

予約は「空いている枠を選ぶ」だけで完了するのが理想と考え、日時・店舗・メニューのどこから入っても残りが自動的に絞り込まれる導線にしました。スマートフォンでの操作を前提に、カレンダーと時間帯の選択は片手で完結する配置に調整しています。

現場運用への配慮も設計に組み込みました。電話予約をスタッフが代理登録できる導線、急な休みに対応するための枠の一括停止、直前キャンセル時の扱いをポリシー設定から変更できる仕組みを用意し、システム側の都合で運用が縛られないようにしています。

実績一覧に戻る

Contact

予約システム開発のご相談

店舗数・予約ルール・決済の有無によって最適な構成は変わります。現在の運用をお聞きするところから始めさせてください。