Stripeで決済をつなぐ
公式サイトでStripe決済とサブスクリプション連携を紹介。DBではチケットやウォレットを運営データとして扱う。
設計上の問い:予定を登録するだけでなく、受講できる条件、重複予約、キャンセル後の残数をどう扱うか。
予約と受講権を分け、同じ開始枠の重複制約とチケットの増減履歴を持つ。開始時刻が異なる重複は別の確認条件にする。
設計判断を読む公式デモの予約・受講者画面。バックアップDBでは、同じ開始枠の重複を止める条件、チケット残数と増減履歴を確認できます。
実画面を見る個人で企画し、生成AIを活用して設計・実装から本番公開まで担当。予約・受講権の画面と保存設計を紹介します。
使う人:オンライン英会話スクール運営者 / 講師 / 受講者運営者が講師・受講者・ブランドを管理する。
テナントを軸に利用者や講師プロフィールを関連づける。
利用可能なチケットと期限を確認する。
ウォレットに残数・総数・期限、履歴に増減と処理後残高を保持。
講師と開始枠を選ぶ。
予約は講師・受講者・テナントを参照。同一開始枠の重複は部分一意制約の対象。
授業記録や次の課題を振り返る。
授業ノート、宿題、学習目標、連続学習日数などを記録する構造。
レッスンとチケットを管理
決済・会議URL・カレンダー
予約確認・リマインド・通知
予約を起点に、決済、オンライン会議、カレンダー、通知へ。スクール運営で行き来するサービスを連携させるSaaSです。
公式サイトでStripe決済とサブスクリプション連携を紹介。DBではチケットやウォレットを運営データとして扱う。
公式機能としてZoom APIによる会議URLの発行、Google Calendar同期を紹介。予定を登録した後の受講準備までを対象にする。
公開ガイドではLINE連携による予約確認・リマインド・キャンセル通知を説明。予約データと連絡の流れを結びつける。
本番公開済みのサービスです。連携機能は公式サイト・ガイド、保存構造はDB設計をもとに紹介しています。
予約の前後に続く運営まで、一つの流れに。
資料から整理した構成図項目を選ぶと、そのデータにつながる関係を確認できます。
userstenant_id接続先:tenantscoach_profilesuser_id接続先:usersbookingscoach_id / student_id接続先:usersticket_walletsstudent_id接続先:usersticket_historywallet_id接続先:ticket_walletsticket_historybooking_id接続先:bookings主要テーブルの関係を抜粋。実線はSQL定義の外部キーです。図では予約・受講権の保存構造を示し、画面とDBをつなぐAPI処理は省略しています。

複数の申請が同じ開始枠を取り合う場面でも、保存先に一意性の条件を持たせられる。
参照:lestiq.sql / bookings_coach_slot_unique
参照:lestiq.sql / ticket_wallets・ticket_history
参照:lestiq.sql / ticket_historyの参照制約
予約の重複を防ぐチェックを、4つの例で紹介します。説明用のため、実際の予約は入りません。
下の状況を選ぶと、図や説明が切り替わります。
10時からの予約はまだありません。このチェックは通りますが、予約の確定にはチケットや営業時間などの確認も必要です。
実運用で確認したいことチケットの有無・有効期限・営業時間も確認する必要があります。
予約だけで完結しないスクール運営を、機能と情報の関係へ整理する。
目的・仕様・画面構成を自分で決め、コード作成に生成AIを活用。画面と処理を動かして検証・改善し、本番公開まで担当する。
予約の重複、受講権、履歴をDB構造に対応づけ、同時予約や残数更新の失敗を次に確かめる条件として示す。
公式サイトが公開する管理・スケジュールのデモ画面。表示名称や数値はデモとして掲載。
PostgreSQL 16.13の予約・チケットの関係、外部キー、同一開始枠の部分一意制約を確認。業務の条件と保存上の制約を対応づけています。
本番環境へ公開済みです。掲載の図と条件切替デモは、予約と受講権の保存設計を説明するためのものです。