LINE LIFF × Supabase

夜のストレッチ会を、
ポイントで続ける

友人グループで夜にオンラインストレッチをするための専用アプリ。 参加すればポイントが貯まり、景品に交換できます。 LINEグループに貼るだけで動く、軽量なLIFFアプリです。

📅 2026-04-17〜 プレオープン 👥 友人グループ専用 🎯 ポイント制+7日連続ボーナス
ホーム画面
Why

運動が続かない「3つの壁」を、
仲間とポイントで乗り越える

健康のためにストレッチを始めても、一人だと続きません。このアプリは運動が続かない「3つの壁」を、仲間との仕組みで解決します。

BEFORE
三日坊主で終わる。
「今日はサボっていいか…」
一人ではモチベーションが続かず、いつの間にか自然消滅してしまう。
AFTER
連続5日、明日参加したら
+3pt ボーナス
ランキング・連続日数・ごほうびで、仲間と一緒に続く理由ができる。
😓 PAIN 01
一人だと続かない。
仲間がいないと忘れてしまう。
✨ SOLUTION
「今日の参加者」と
週間ランキングで可視化

今日誰が参加したか、今週の上位メンバーが誰かが一目で見える。仲間の存在が励みになる。

😓 PAIN 02
頑張っても、サボった人と
何の差もつかない。
✨ SOLUTION
ポイント × 連続ボーナス ×
LINEギフト交換

参加で +1pt、7日連続で +3pt ボーナス。貯めたptはスタバやアイスなどの LINE ギフトに交換。頑張った人にリアルなごほうび。

😓 PAIN 03
運営の手作業が大変。
管理が面倒で続かない。
✨ SOLUTION
定期スケジューラ ×
自動通知 × 承認フロー

曜日・時刻を登録しておけば毎週自動で宣言・通知。景品は仮押さえ→承認のフローで、運営のミスを防止。

2
ポイント獲得経路
+3pt
7日連続ボーナス
30 / 60 / 90
景品ポイント相場
JST
日本時間で判定
Features

得られる「4つの体験」

機能を並べるのではなく、アプリが実現する ユーザー体験の変化 で整理しました。

1
みんなと「同じ時間」を共有する 一人じゃない時間をつくる

🧘 ストレッチ動画の同期視聴

YouTube をみんなで同時再生。管理者が「再生/一時停止/現在位置を全員に同期」できる。2/3 以上の視聴で自動的に +1pt。

🚶 お散歩ライブ配信

Daily.co の軽量ビデオルーム。カメラONでもチャットだけの参加でもOK。5分参加ごとに +1pt(複数回OK)。

👥 今日の参加者カード

いま誰が動画を観た/ライブに参加したかがホームに表示。仲間がいる感覚がリアルタイムに伝わる。

2
続けたくなる「動機」を作る 数字・連続・ランキングで可視化

🔥 7日連続ボーナス(累積)

連続参加で 7日ごとに +3pt、14日で +6pt、21日で +9pt… と累積。「あと何日で+3pt」のヒントも表示。

🏆 週間ptランキング

今週の獲得ptでTOP5を表示。自分の行はハイライト。1位〜3位にはメダル表示。

👣 日別歩数ランキング

スマホの歩数計(Pedometer)と連携。散歩しない日でも日常の歩数で競える。

📈 トレンド & カレンダー

週次/月次のpt推移グラフ、参加日のヒートマップカレンダーで自分の成長が見える。

3
ごほうびで「楽しむ」 貯めたポイントをリアルなギフトに

🎁 景品:30 / 60 / 90pt の3段階

小景品(30pt):スタバドリンクチケットなど/中景品(60pt)/大景品(90pt)の3段階。モチベーションが段階的に持続。

💳 ポイント仮押さえ → 承認フロー

申請時はポイントを仮押さえ。管理者が承認した時点で正式消費。却下されれば仮押さえ解除。二重交換を防止。

📮 LINEギフトで送付

管理者が承認後、LINEギフトで景品を送付。送付済みステータスまでアプリで管理。

4
運営の「手間」をほぼゼロに 管理者が楽になる自動化・権限設計

🗓 定期イベント自動登録

曜日・時刻・種類を登録しておけば、毎週自動でイベント宣言を作成。5分前にLINE通知まで全自動。

📢 管理者の一斉配信

「今夜のストレッチ21時から」などをワンフォームで全メンバーにLINE通知。

🛡️ 異議申立(取消)機能

不正や誤申告は72時間以内に管理者が取消可能。理由コメント必須で透明性も確保。

🔔 個別通知ON/OFF

ライブ開始/イベント5分前/歩数ボーナス/管理者お知らせを、ユーザーごとに切り替え可能。

Craft

細部のこだわり

仲間同士のゆるい運用でも、不正や運用事故が起きないように。見えない部分も丁寧に作り込みました。

🛡 セキュリティ

RLS + RPC で
権限を DB 側で保証

クライアントから直接 INSERT/UPDATE できないよう Row Level Security で塞ぎ、書き込みは全て RPC 経由。管理者判定もサーバー側で検証。

🔥 ストリーク

7日ごとに
累積ボーナス

連続参加 7日目、14日目、21日目…と 7日ごと+3pt を繰り返し付与。1日でも途切れたら翌日から1日目としてカウント再開。

💳 景品交換

申請時に
ポイント仮押さえ

先着順+仮押さえ方式。申請した瞬間に他の申請ではそのpt使用不可に。管理者却下で自動解除。二重交換や残高オーバーを DB制約で 防止。

🌏 時刻判定

すべて JST 基準
深夜帯も考慮

申告可能時間は 10:30〜翌02:00 JST。ストレッチ会が夜間のため深夜2時までの申告も当日扱いに。連続日数も JST 日付で判定。

🔒 二重付与防止

UNIQUE制約で
同日重複を排除

UNIQUE(user_id, date) のDB制約で、同日の二重申告をアプリ層ではなく DBレベルで拒絶。競合しても必ず1回だけ記録。

📱 UX

1タップで
参加完了

ホーム画面の大きなCTAをタップするだけで参加申告+ポイント付与。承認待ちはなく、体験のリズムを途切れさせない。

Screens

画面プレビュー

実機のスクリーンショットです。

ホーム画面

ホーム

今日の獲得pt、ストリーク、ランキング、今日の参加者を1画面に集約。

ストレッチ動画画面

ストレッチ動画(同期視聴)

みんなで同じ動画を同期再生。2/3 以上視聴で +1pt。管理者は再生/一時停止/全員に同期が可能。

お散歩ライブ画面

お散歩ライブ配信

散歩を宣言してみんなで同じ時間に。カメラ・音声・チャットのみの気軽な参加でもOK。5分以上参加で +1pt。

景品一覧画面

景品一覧

保有ptと、交換可能な景品・必要pt・在庫を表示。足りない場合は「あと○pt」でゴールが見える。

ポイントトレンド

マイページ:トレンド

週次/月次のポイント獲得グラフ。習慣化の成長が視覚でわかる。

参加カレンダー

マイページ:カレンダー

月単位で参加日をひと目で確認。連続日数のモチベーションにも。

通知設定

マイページ:通知設定

ライブ開始・イベント5分前・歩数ボーナス・管理者お知らせなど、通知を個別にON/OFF。

一斉配信

管理:一斉配信

管理者が全メンバーにLINE通知を配信。今夜のイベント告知に使える。

定期イベント

管理:定期イベント

曜日と時刻を指定して毎週自動でイベント宣言を作成。5分前に通知まで自動で実施。

Demo

動作デモ動画

実際の操作を収録した動画です。

Tech Stack

使用技術

モダンで無料枠内に収まる構成。個人開発でも保守できる範囲に絞っています。

React 19
UIフレームワーク
TypeScript
型安全
Vite
ビルド/HMR
LIFF SDK
LINEログイン
Supabase
DB + Auth + RPC
PostgreSQL
リレーショナルDB
Row Level Security
行単位セキュリティ
Vercel Functions
通知API(サーバレス)
Daily.co
ライブ配信
YouTube IFrame API
動画同期視聴
LINE Messaging API
通知配信
Cloudflare Pages
プレゼン資料ホスト
なぜこの構成?
LINEコミュニティ内で配布することが決まっていたため、LIFFが必須。 バックエンドは最初 Firebase で試しましたが、RLSで「クライアントからの直接書き込みを塞ぐ」のが簡単な Supabase に移行しました。 小規模なグループ向けなので、全サービス無料枠内に収まります。
📊 想定される収容人数
無料プランの上限は構成要素によって異なります。ライブ配信(Daily.co)が最も制約がきつく、月10,000分までのため ライブ中心なら 30〜50人 程度、 ストレッチ動画・ポイント管理だけなら 数百人 まで無料枠で運用可能です。 Supabase の認証は無料でも月間アクティブ 50,000 人まで対応するため、有料プランに切り替えれば 数千人規模 のコミュニティにもスケール可能な設計です。
Architecture

システム構成

クライアントは Supabase に直接接続し、書き込み系はすべてRPC経由。 権限チェックはDB側で完結しています。

LINEコミュニティ 公式アカウントから LIFF URL を配信 メンバー LINE内ブラウザ (LIFF SDK) 管理者 景品登録/交換承認 異議申立(不正時) React LIFF アプリ React 19 + TS Vite + HMR LIFF SDK Daily.co YouTube IFrame(動画同期) ホスト: Vercel Edge(CDN配信) Supabase PostgreSQL users / participations prizes / exchanges / logs RPC 関数 participate / revoke exchange / approve RLS ポリシー 書き込み禁止 (RPC経由のみ) Auth LINE userId を PKとして利用 Vercel Edge Functions LINE通知 Messaging API Push お散歩告知 Cron 配信
Dev Timeline

開発タイムライン

企画から運用開始まで 約 6 日間。 仕様 → MVP → 追加機能 → 安定化 の順で進めました。

6日
企画〜運用開始
25
DBマイグレーション
25
Reactコンポーネント
~2,500
SQL行数(RPC含む)
2026-04-17(Day 0)
企画 & 仕様策定
SPEC.md v0.1 起草。ポイントルール・景品相場・申告時間帯を決定。プレオープンを実施。
2026-04-18(Day 1)
MVP 実装 + バックエンド Supabase 移行
LINE Developers/Supabase セットアップ。参加申告・ポイント付与・景品交換・異議申立の Phase 1〜2 を一気に実装。
動画同期視聴、お散歩ライブ、Pedometer、お散歩告知を追加。
2026-04-19(Day 2)
ランキング・通知・定期イベント
週間pt/日別歩数ランキング、通知配信、リマインダー、繰り返しスケジューラ、マルチライブを実装。
2026-04-20(Day 3)
安定化 & バグ修正
「参加申告がサイレントで失敗する」問題を修正。ライブ状態(live_now)表示を追加。
2026-04-21〜22(Day 4-5)
仕上げ
ライブ参加の重複付与を排除。UI微調整。本番リリース完了。
Method

開発方法 — AIペアプロで短期間実装

Web開発の経験が浅いユーザーが、Claude Code を使った AIペアプログラミングで実装。 仕様書 → 実装 → 検証 → デバッグ のサイクルをAIと一緒に回しました。

1

仕様をMarkdownで明文化

ポイントルール・画面一覧・データモデルまでを SPEC.md に事前に書き出し、AIと共有。

2

環境セットアップ手順書

初心者が迷わないように、LINE Developers/Supabase/Node.jsの手順を SETUP.md にまとめて順番に実施。

3

AIと実装、すぐ検証

機能追加ごとに scripts/verify-*.mjs で動作確認。「書いたら試す」のテンポを維持。

4

DB変更は必ずマイグレーション

Supabase CLI で supabase/migrations/ に SQL を貯める運用。巻き戻し・再現が楽。

5

権限はサーバー側で保証

書き込み系は RLS で直接INSERT禁止。すべてRPC経由で管理者チェックを通す。

6

プレオープン → 本番

4/17にグループに URL を貼って動作確認。翌日4/18から正式運用スタート。

使ったツール: Claude Code(AIコード生成)/VS Code(エディタ)/Git(バージョン管理)/Supabase CLI(DB管理)/Vercel CLI(デプロイ)。 コーディング自体は ほぼAI任せ、人間は「仕様を言語化する」「動作を確認する」「意思決定する」に集中。
Running Now

すでに、動いています。

このアプリはモックアップでも試作品でもなく、すでに友人グループで稼働中です。
A.Wada さん・hiroko さん・yumiko.ama さんなど、仲間が毎日参加し、ポイントを貯め、景品に交換しています。

2026-04-18
本番運用開始日
毎晩22:30
ストレッチ会タイミング
LINEグループ
配布チャネル

ひとりでは続かない運動を、仲間とポイント制で楽しく続ける。
友人グループの夜のストレッチに、ちょうどよく寄り添うアプリです。