予約とスケジュールを管理するWebアプリを作ります。スタッフごとの枠、所要時間の違い、空き時間の検索までを含めて、実際の運用に耐える形で組みます。
■ こんな方へ
・紙のノートやスプレッドシートで予約を管理していて、記入漏れや二重予約が起きている
・既存の予約サービスでは枠の組み方が合わない
・スタッフごと、部屋ごとに枠が分かれていて、既製品で表現できない
・スタッフ用と、お客様に見せる用で表示を分けたい
■ この種のアプリで一番大事なところ
機能の多さではなく、二重予約が絶対に起きないことだと考えています。
空き枠の判定を画面側の条件分岐だけで行うと、2人のスタッフがほぼ同時に別のお客様を同じ枠に入れたとき、両方とも「空いている」と判定されて両方入ってしまいます。滅多に起きませんが、起きたと気づくのは当日で、被害が一番大きい種類の不具合です。
私はこれをデータベース側の制約で止める作りにします。PostgreSQLには「同じ担当者・同じ部屋で、時間帯が1秒でも重なるレコードは保存できない」というルールをデータベース自体に持たせる仕組みがあります。これを入れておけば、どの画面から、どんな順番で操作されても、重複した予約はそもそも保存できません。画面側の判定は使いやすさのため、データベースの制約は絶対に破られないため、と役割を分けます。
■ 作れるもの
・担当者ごと、部屋ごとの枠の登録(曜日のパターン、第2・第4週だけ枠が違う、といった例外も設定できます)
・メニューごとの所要時間(選んだ時点で終了時刻が自動で決まります)
・空き時間の検索(「この担当者の最短の空きはいつか」「誰でもよいので最短はいつか」)
・予約の登録、変更、取り消しと、その履歴
・ログインと権限(スタッフと管理者で見える範囲を分けます)
・お客様向けの予約表の表示、印刷
・スマートフォン、タブレットでの利用(ブラウザで動くのでアプリのインストールは不要です)
■ 使う技術
Next.js、TypeScript、Supabase(PostgreSQL)で構築します。サーバーの管理がほぼ不要で、公開後の運用費を抑えられます。
■ 進め方
1. 現在の予約の流れと、枠の決まりを伺います
2. 画面の一覧と、誰が何を見られるかの表をお出しします
3. 実装し、テスト用の環境でご確認いただきます
4. 公開し、しばらくは紙や既存のやり方と並行して運用していただきます
全部を一度に出すより、枠の管理と空き検索だけを先に使っていただく形をおすすめしています。
■ 正直にお伝えすること
・実務経験は2年です。医療機関向けなど、業界の規定(3省2ガイドラインなど)への準拠が必要な場合は対応できません
・決済機能を含める場合は別途お見積りします(Stripeでの実装経験はあります)
・既存の予約システムとの連携は、相手側に連携の口があるかどうかで可否が変わります
・デザインの新規制作は承っておりません
まずはメッセージでご相談ください。規模を伺ったうえで、できること・できないことを先にお伝えします。
ご購入前に、現在の予約の流れ/担当者と部屋の数/枠の決まり(曜日ごとの時間、例外の有無)/メニューと所要時間/お客様に見せる必要があるか/ご希望の公開時期を、メッセージでお知らせください。内容を伺ってお見積りします。規模によっては金額と納期が変わります。既存システムとの連携をご希望の場合は、そのサービス名もお知らせください。