TOPLOGIN交換広場カート管理DOCSHOME

NECOPO MVP System Documentation

自然を守る人が、報われる仕組みを。

NECOPO は、自然共生サイトを起点に、生態系保全に人・活動・価値がめぐるエコシステムを目指す MVP です。このページでは、開発時に段階的に決めてきた思想、要求、設計方針、DB 構成、画面構成、現時点のシステム仕様を整理します。

2026-05-24 時点の公開テスト用資料

Purpose

開発の背景と目的

自然保全活動は、現地で手を動かす人、土地やサイトを維持する人、活動を支える人など、多くの関係者によって成り立ちます。 しかし、その貢献は見えにくく、活動の価値が循環する仕組みはまだ十分ではありません。

NECOPO MVP は、自然共生サイトや保全活動を起点に、ポイント、出品、交換、問い合わせを小さく回してみるための実験システムです。 最初から完成形を作るのではなく、関係者が実際に触りながら、価値の流れ、運用負荷、UX、制度上の論点を確認することを目的にしています。

Actors

想定ユーザーと利用シーン

一般ユーザー

ログインし、HOMEで残高を確認し、交換広場で出品や購入申請を行います。

出品者

商品・サービスを出品し、購入申請を確認し、承認や取り下げを行います。

管理者

テスト参加者へのポイント付与、状態確認、運用上の調整を行います。

テスト参加者

不具合・改善要望掲示板で、使い勝手や導線へのフィードバックを投稿します。

MVP Scope

現在実装している機能

  • OAuth を中心にしたアカウント作成・ログイン
  • HOME でのウォレット、残高、取引履歴の確認
  • 交換広場での出品一覧、出品詳細、購入申請
  • 購入申請時のポイントロック、出品者承認、完了処理
  • 出品ごとの公開チャット
  • 出品者による出品取り下げとロック金額の解除
  • 管理者によるポイント付与
  • 不具合・改善要望掲示板
  • サイトポリシー、利用規約などの文書ページ

Screen Flow

画面構成と画面遷移

TOP

プロジェクトの入口。アカウント作成・ログイン画面へ誘導します。

LOGIN

Google / GitHub OAuth を中心に認証します。Magic Link は補助導線です。

HOME

ユーザー、ウォレット、残高、取引履歴を確認します。

交換広場

出品一覧を見て、出品詳細や新規出品へ進みます。

出品詳細

説明、価格、在庫、購入申請、出品チャットを扱います。

カート管理

購入申請の状態、承認待ち、完了に向けた状況を確認します。

出品者管理

申請承認、却下、出品取り下げを行います。

お問い合わせ

不具合・改善要望をスレッド形式で投稿し、OPEN / CLOSED を管理します。

主要遷移

TOP → LOGIN → HOME → 交換広場 → 出品詳細 → 購入申請 → カート管理 → 取引完了

交換広場 → 新規出品 → 出品者管理 → 申請承認 / 出品取り下げ

フッター → お問い合わせ → スレッド作成 → 返信 → CLOSE / REOPEN

Architecture

設計方針

  • 認証済みユーザーだけが残高、取引、出品、チャットを操作できること
  • Supabase Auth のユーザーとアプリ側ユーザーを分離し、auth_user_id で連携すること
  • ポイント残高は available と locked に分け、申請中の金額を明示できること
  • 取引の状態遷移を DB 上に残し、あとから履歴を追えること
  • RLS により、本人に関係するウォレット、残高、取引だけを読めること
  • DB 変更は migration SQL として Git 管理できること

技術構成

フロントエンドは Next.js、公開基盤は Cloudflare Workers / Pages、認証と DB は Supabase を使っています。Cloudflare では build variables と runtime variables の両方に Supabase 環境変数を設定し、公開環境では OAuth を中心に認証します。

Database

データ設計

テーブル役割
auth.usersSupabase Auth が管理する認証ユーザー。OAuth や Magic Link の入口。
public.usersNECOPO アプリ上のユーザー。display_name、role、status、auth_user_id を持つ。
walletsユーザーやサイトアカウントが持つ財布。owner_type と owner_id で所有者を表す。
balancesウォレットごとの利用可能額とロック額を保持する。
transactions付与、移転、ロック、解除など、ポイント変動の履歴を残す。
listings交換広場に出す商品・サービスの出品情報。
trade_requests購入申請、承認、却下、完了、取り下げ時キャンセルを管理する。
listing_messages出品ごとの公開問い合わせチャット。
feedback_threads / feedback_posts不具合・改善要望掲示板のスレッドと返信。

関係の中心

`auth.users.id` → `public.users.auth_user_id` → `wallets.owner_id` → `balances.wallet_id` / `transactions.from_wallet_id` / `transactions.to_wallet_id` という流れで、認証ユーザー、アプリユーザー、ウォレット、残高、取引履歴をつなぎます。

Specification

現時点のシステム仕様

認証

ログイン画面では Google 認証と GitHub 認証を主導線にしています。Magic Link は送信制限の影響が大きいため、新規登録用の補助導線として下部に配置しています。

ポイントと取引

購入申請時に必要額を locked に移し、出品者の承認後に取引を進めます。取り下げやキャンセル時にはロック金額を解除し、履歴を残します。

チャット

出品詳細には出品ごとの公開チャットを設置しています。問い合わせ掲示板は不具合・改善要望ごとにスレッドを分け、 作成者または admin が CLOSE / REOPEN できます。

AI Development

Codex を用いた開発プロセス

本 MVP は、思想や要求を人間が提示し、Codex がコード、SQL、RLS、UI、デバッグを対話的に支援する形で進めています。 仕様を最初に固定するのではなく、動くものを確認しながら、認証方式、RLS、画面導線、問い合わせ掲示板などを段階的に具体化しました。

生成AIの役割は、単にコードを書くことだけではありません。エラーの切り分け、Supabase と Cloudflare の環境差分の確認、SQL Editor 用の文面作成、Git 管理すべき migration の整理など、開発の周辺作業にも広がっています。

Next Issues

今後の検討課題

  • UX と導線の継続整理
  • 画像アップロード、証跡、活動レポートとの連携
  • 本番用 OAuth Provider 設定と Supabase Pro 運用
  • バックアップ、復旧手順、監査ログの整備
  • 法務文書、特定商取引、個人情報保護の確定
  • ポイント設計、手数料、バーン、会計上の扱いの精査