実績一覧へ戻る
飲食業界 × マーケットプレイス

キャッチミー

成果報酬型 空席マッチング × 月次台帳設計

飲食店舗向けに、空席募集 → 来店応募 → 成果報酬決済までを LINE 上で完結させるマーケットプレイス。月次台帳 (append-only) + 状態派生のドメイン設計で会計的整合性を担保。

飲食業界 × マーケットプレイス

成果報酬型 空席マッチング × 月次台帳設計

Next.jsLINE LIFFFirebaseServer ActionsVercel Cron
Overview

プロジェクト概要

飲食業界向けに、空席募集 × 来店応募 × 成果報酬決済をワンストップで提供するマーケットプレイス「キャッチミー」を開発しました。LINE LIFF + Firebase を基盤に、ドメインロジックを「台帳 (Append-only) + 状態派生」で設計しています。

Challenge

課題

「店舗が空席募集 → ユーザーが応募 → 来店成立 → 集計・締め → 請求」というワークフローには、お金の流れが含まれます。一般的なステータス管理だと、修正対応や月締めをまたぐ訂正で破綻しがちです。会計的に整合する設計が求められました。

Solution

解決方針

Append-only な台帳テーブルに「事実だけを書き足し、ビューはそこから派生する」設計を徹底。修正はマイナス仕訳として記録し、状態カラムをむやみに増やさず台帳の集計で表現します。Vercel Cron + Firebase Function による月次バッチで、請求 CSV と振込 CSV を自動生成。LINE はチャット機能を持たず通知 + CS 導線にだけ使う、と機能スコープを意図的に絞り込みました。

Architecture

アーキテクチャ

  • Frontend: Next.js (App Router) + LIFF + Server Actions
  • Backend: Firebase Firestore + Cloud Functions (月次バッチ)
  • Cron: Vercel Cron + Cloud Functions
  • Messaging: LINE Messaging API (通知 + CS のみ)
  • Identity: LINE Login + 年齢確認 (20+) フロー
Outcomes

成果・特徴

  • 「状態を増やさない」「台帳で表現する」原則を PRD と README で明文化し、長期保守に強い構造へ
  • 月次の請求書 / 振込 CSV を自動生成し、運営の集計工数を削減
  • アプリ内チャットを排除することで、CS とプロダクトのスコープを明確に分離
Highlights

ハイライト

台帳 + 状態派生のドメイン設計

状態をむやみに増やさず、台帳 (Append-only) からビューを派生。修正は「マイナス仕訳」で表現。

請求 / 振込 CSV の月次自動生成

締め日に Firebase Function + Vercel Cron が走り、請求書と銀行向け振込 CSV を自動生成。

通知に振り切ったチャット設計

アプリ内チャットを持たず、LINE は通知 + CS 導線のみに割り切ることで運用コストを最小化。

動くデモで終わらせず
本番まで持っていく開発

AI で作りかけたもの、止まりかけている開発、新しいプロダクトの構想。 まずは現状を整理するところから、ご相談ください。