Synaplan
기업을 위한 오픈소스 AI 플랫폼
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기GreenTrack GHG Management — オープンソースのGHG排出量の算定・可視化・レポーティングツール
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗公式サイト: https://g-track.org/ — 製品概要・導入事例・お問い合わせはこちら。
OpenGreenTrack は企業向けの温室効果ガス(GHG)排出量算定・可視化・管理プラットフォームです。Scope 1 / 2 / 3 を横断し、拠点別・カテゴリ別の排出量を集計して、経営層から現場まで意思決定に活かせるダッシュボードを提供します。
| 技術 | 役割 |
|---|---|
| Next.js(App Router) | フロントエンドフレームワーク。ファイルベースルーティング・Server Components |
| React | UIコンポーネント |
| TypeScript | 静的型付け |
| Supabase | バックエンド基盤(PostgreSQL / Auth / RLS) |
| Tailwind CSS + CSS Variables | 緑基調のデザイン(src/styles/globals.css) |
| recharts | グラフ・チャート描画 |
| lucide-react | アイコン |
| clsx | クラス名結合ユーティリティ |
依存ライブラリは最新安定版を使用します(プレリリース版は不可)。バージョン方針・開発規約の正本は AGENTS.md を参照してください。
アーキテクチャの全体像は docs/architecture.md、ディレクトリ構成は docs/directory-structure.md を参照してください。
詳しい手順は docs/setup-guide.md を参照してください。
セットアップ方法は、目的に応じて 2 つあります。
| 経路 | 用途 | 主な流れ |
|---|---|---|
| ローカルで動かす(推奨) | まず無料で試す、開発する | Docker + Supabase CLI → npx supabase start → npm run db:reset:demo → npm run dev |
| クラウドで運用する | チーム利用、本番利用 | Supabase プロジェクト作成 → npx supabase link --project-ref xxx → npx supabase db push --include-seed → .env.local にクラウドの値を設定 |
Docker をインストールできない会社 PC では、クラウドで運用する経路を選んでください。macOS / Windows でのターミナル操作や Docker 未導入時の対応も docs/setup-guide.md に記載しています。
| ツール | 必要なバージョン | 確認コマンド | 備考 |
|---|---|---|---|
| Node.js | 24 以上(package.json の engines で指定) | node -v | 満たさない場合 npm install 時に EBADENGINE 警告が出ます |
| npm | Node.js 24 同梱のもの | npm -v | |
| Git | 任意の最新版 | git --version | |
| Docker Desktop | ローカルで動かす場合のみ必要 | docker --version | クラウドで運用する経路では不要 |
上から順に実行してください(ローカルで動かす場合)。
| 順番 | 作業 | コマンド |
|---|---|---|
| 1 | リポジトリ取得と依存インストール | git clone → npm install |
| 2 | 環境変数ファイルのひな形を作る | cp .env.example .env.local |
| 3 | Supabase 起動 → DB 作成 → .env.local に値を記入 | npx supabase start → npm run db:reset:demo |
| 4 | 開発サーバー起動 | npm run dev |
手順 1: リポジトリを取得して、依存パッケージをインストールします。
git clone <リポジトリURL>
cd OpenGreenTrack
npm install
npm install時に lefthook が Git フック(pre-commit)を自動セットアップします。 以降、コミット時にステージした.ts/.tsxに自動でeslint --fixがかかり、CI が赤くなる前にローカルで整えられます。 どうしてもスキップしたい場合はgit commit --no-verifyを使えますが、同じ lint は CI 側でも実行されます。
手順 2: .env.example をコピーして .env.local を作ります。
cp .env.example .env.local
実際の値は次章「Supabase セットアップ」を実行すると得られます。 取得した値を、次の対応表のとおり .env.local に書き込んでください。
| 取得元の名前 | .env.local の変数名 |
|---|---|
API_URL(ローカル) / Project URL(クラウド) | NEXT_PUBLIC_SUPABASE_URL |
ANON_KEY(ローカル) / anon public(クラウド) | NEXT_PUBLIC_SUPABASE_ANON_KEY |
SERVICE_ROLE_KEY(ローカル) / service_role(クラウド) | SUPABASE_SERVICE_ROLE_KEY |
npx supabase status -o env で上記 3 つの名前(API_URL / ANON_KEY / SERVICE_ROLE_KEY)の値が表示されます。npx supabase start の画面表示は Project URL / Publishable / Secret というラベルで、.env.local の変数名とは異なるため、値の確認には -o env を使うのが確実です。.env.example はコミットして共有する(サンプル値のみ).env.local は機密情報を含むため、決してコミットしない(.gitignore 済み)SUPABASE_SERVICE_ROLE_KEY は管理者権限キーのため、サーバ側でのみ使用する(クライアントコードでの参照禁止)Tip: ローカルで動かす場合は、次のコマンドで
.env.localに貼り付けられる 3 行をそのまま出力できます。npx supabase status -o env \ --override-name api.url=NEXT_PUBLIC_SUPABASE_URL \ --override-name auth.anon_key=NEXT_PUBLIC_SUPABASE_ANON_KEY \ --override-name auth.service_role_key=SUPABASE_SERVICE_ROLE_KEY
手順 3: Supabase を起動して DB を作り、.env.local の値を埋めます。
ローカルで試す場合:
npx supabase start
npm run db:reset:demo # DB を作り直し、公式排出係数マスタ + デモデータを投入
npx supabase start が完了したら、環境変数 の対応表に従って .env.local の 3 つの値を埋めてください(値は npx supabase status -o env で再表示できます)。
クラウドで運用する場合:
npx supabase link --project-ref <Project Ref>
npx supabase db push --include-seed # マイグレーション + 公式排出係数マスタを反映
supabase db reset はローカル DB を作り直すコマンド、supabase db push はクラウド DB へマイグレーションを反映するコマンドです。
Supabase CLI は npx supabase … で実行します(npm run db:* も内部で npx supabase を呼びます)。Homebrew 等で入れた supabase を併用する場合は、同じメジャーバージョンに揃えてください。
supabase/migrations/ はテーブル定義など DDL 専用(データは置かない)で、データは supabase/seeds/ にあります。supabase/seeds/production/(公式排出係数マスタ)は supabase db reset / supabase db push --include-seed で自動的に投入されます。supabase/seeds/demo/(デモ組織・デモユーザー [email protected] / password123 を含むデモデータ)は npm run db:reset:demo または npm run db:seed:demo で明示的に入れたときだけ投入されます。本番には入れないでください。手順の詳細とつまずきやすい点は docs/setup-guide.md、シードとコマンドの一覧は supabase/README.md を参照してください。
手順 4: .env.local を埋め終えたら起動します。
npm run dev
ブラウザで http://localhost:3000 にアクセスします(ポートは 3000 に固定)。
デモデータを投入した場合は [email protected] / password123 でログインできます。
| コマンド | 説明 |
|---|---|
npm run dev | 開発サーバー起動(http://localhost:3000) |
npm run build | 本番ビルド |
npm run start | 本番ビルドの起動 |
npm run lint | ESLint 実行 |
npm run test | テスト実行(vitest) |
npm run test:watch | テストをウォッチモードで実行 |
npm run test:e2e | E2Eスモークテスト実行(Playwright / ローカルSupabase必須) |
npm run test:e2e:ui | E2Eスモークテストを UI モードで実行 |
npm run test:e2e:install | E2E用のブラウザ(Chromium)をダウンロード(初回のみ) |
npm run db:reset | ローカル DB を作り直す(マイグレーション + 公式排出係数マスタ) |
npm run db:reset:demo | ローカル DB を作り直し、デモデータまで投入する |
npm run db:seed:demo | 起動中のローカル DB にデモデータ(supabase/seeds/demo/demo.sql)を投入する |
npm run db:seed:production | 起動中のローカル DB に公式排出係数マスタを(再)投入する |
npm run check:migrations | supabase/migrations/ にデータ操作(DML)が混入していないか検査する |
ドキュメントはすべて日本語です(ファイル名は英語 kebab-case に統一)。 All documentation is written in Japanese.
| ドキュメント | 内容 |
|---|---|
AGENTS.md | 開発規約の正本(AIエージェント・人間共通。必読) |
docs/architecture.md | Next.js + Supabase のアーキテクチャ |
docs/coverage-and-limitations.md | 算定の対応範囲と限界(対象ガス・Scope 2 の方式・Scope 3・検証されている範囲) |
docs/directory-structure.md | ディレクトリ構成規約 |
docs/setup-guide.md | ローカル / クラウドのセットアップ手順 |
docs/e2e-testing.md | E2Eスモークテスト(Playwright)の前提・実行方法 |
docs/functional-spec.md | 機能仕様(画面・URL・列挙型・バリデーション規則・算定ロジック概要) |
docs/database-design.md | DB 物理設計(テーブル・カラム定義) |
docs/calculation-logic.md | 算定ロジックの詳細(係数解決・単位換算・未算定の扱い) |
NEXT_PUBLIC_ プレフィックス付きのもののみSUPABASE_SERVICE_ROLE_KEY は RLS をバイパスする管理者キー。必ずサーバー側でのみ利用する.env.local を誤ってコミットした場合は、速やかに該当キーをローテーション(Supabase で再発行)するupload-quarantine バケット)へ直接アップロードし、サーバはパスだけを受け取ってストリーミングで読み取る。リクエストボディ制限のあるホスティング(Vercel 等)でも動作し、Node のメモリは数百MBで足りる(詳細は docs/setup-guide.md の 2-F)SECURITY.md の手順で報告してくださいバグ報告・機能提案・コード貢献を歓迎します 🌱
CONTRIBUTING.mdAGENTS.mdCODE_OF_CONDUCT.md本プロジェクトは Apache License 2.0 の下で公開されています。
docs/idea-scope3-spec.md| Scope 3 積上げ(IDEA データベース連携)の仕様 |