概要
- Carbonは、既存ERPの課題を解決するために開発されたAPIファーストの製造業向けプラットフォーム
- 柔軟な拡張性とベンダーロックインの排除を重視
- モノレポ構成でアプリとパッケージを整理
- Dockerベースのローカル開発環境をサポート
- 豊富な機能と最新技術スタックを採用
Carbon: 新しいERPは必要か?
- 従来のERP では、APIファーストの近代的ツールが存在しない現状
- ベンダーロックイン が深刻で、コストや柔軟性の問題
- 各企業固有の業務要件 に「完璧なERP」は存在しないという認識
- Carbonはこれらの課題を解決するために設計
アーキテクチャと拡張性
- APIを通じたアプリ拡張 を前提とした設計
- examplesフォルダ にサンプルアプリを同梱
- 独自アプリ開発 を容易にするプラットフォーム
主な機能
- ERP、MES、QMSなど 製造業向け主要機能 を網羅
- カスタムフィールド、ネスト型BoM、トレーサビリティ、MRP、MCPクライアント/サーバAPI、Webhook対応
- 会計、容量計画、シミュレーション 等の拡張機能
技術的ハイライト
- 認証・権限管理 の統一
- フルスタック型の型安全性 (DBからUIまで)
- リアルタイムDB購読、ABAC/RBAC/RLSによる多層アクセス制御
- ユーザーグループの柔軟な構成、オペレーション依存グラフ
- サードパーティ連携 の充実
採用技術スタック
- Remix (フレームワーク)
- Typescript (言語)
- Tailwind (スタイリング)
- Radix UI (UI挙動)
- Supabase (DB・認証)
- Upstash (キャッシュ)
- Trigger.dev (ジョブ管理)
- Resend/Novu (通知・メール)
- Vercel (ホスティング)
- Stripe (課金)
モノレポ構成
- /apps :各アプリ(ERP, MES, Academy, Starter等)
- npm run devで個別起動
- /packages :共通ライブラリや設定
- eslint-config, database, integrations, logger, react, stripe, utils等
開発セットアップ
- GitHubリポジトリのクローン (AGPLv3準拠、商用はライセンス取得)
- Docker必須、外部サービス(Upstash, Trigger.dev, Posthog)設定
- .envファイル作成、各種APIキー・トークン設定
- npm run db:start/build でDBセットアップ、 npm run build/dev でアプリ起動
- 初期ログイン :usernameにメールアドレス、passwordはcarbon
アプリケーションURL(ローカル環境)
- ERP: http://localhost:3000
- MES: http://localhost:3001
- Academy: http://localhost:4111
- Starter: http://localhost:4000
- Postgres: postgresql://postgres:postgres@localhost:54322/postgres
- Supabase Studio: http://localhost:54323/project/default
- Mailpit: http://localhost:54324
- Edge Functions: http://localhost:54321/functions/v1/
運用コマンド
- DBコンテナ停止・削除 :npm run db:kill
- DB再起動・再シード :npm run db:build
- 特定アプリのみ起動 :npm run dev -w @carbon/react など
APIの利用方法
- ERPアプリ内で自動生成されるAPIドキュメント (${ERP}/x/api/js/intro)
- 外部コードベース からSupabaseクライアント経由で利用可能
- Javascript、Flutter、Python、C#、Swift、Kotlin対応
- APIキーはERPの設定画面で発行
- モノレポ内パッケージ から直接利用
- getCarbonServiceRole()で全社データ取得や会社単位の絞り込みが可能
まとめ
- Carbonは 現代的なAPIファーストERP を目指し、柔軟な拡張性と強力な機能群を提供
- ベンダーロックインの排除、 独自開発の容易さ、 最新技術の統合 が特徴
- 製造業の多様なニーズに応える 次世代ERPプラットフォーム