- React フロントエンドダッシュボード
- Express バックエンド API
- マルチプロバイダー対応アダプター構成
- 実行モード:
node/serverless - DB ベースのストレージと bootstrap フロー
- 複数 AI プロバイダーを横断した統合ダッシュボード
- プロバイダー認証情報管理とクォータ表示
- 利用履歴とチャートページ
- Endpoint / プロキシ関連 API ページ
- Bootstrap + 管理者ルート初期化フロー
- 複数 DB エンジン対応:
sqlite、d1、postgres、mysql
プロバイダー別のサンプルと統合ノート: docs/providers
- Frontend: React 18, TypeScript, Vite, Tailwind CSS
- Backend: Node.js, Express, TypeScript
- Storage: SQLite / Cloudflare D1 / PostgreSQL / MySQL
.
├─ src/ # フロントエンドアプリ
├─ server/ # バックエンド API, 認証, ジョブ, ストレージ
├─ deploy/ # プラットフォーム別デプロイガイド
├─ docs/ # API ドキュメント, プロバイダー例, 翻訳, 設定ドキュメント
├─ config.all.yaml # 設定テンプレート(全項目)
├─ config.yaml # ローカル有効設定(コピーして作成)
└─ .env.all # 環境変数テンプレート(全項目)
nginx + Node.js のシングルコンテナ構成。データはボリュームマウントで永続化されます。
mkdir -p ~/aimeter/db ~/aimeter/log
docker run -d --name aimeter \
-p 3000:3000 \
-e AIMETER_DATABASE_ENGINE=sqlite \
-e AIMETER_DATABASE_CONNECTION=/aimeter/db/aimeter.db \
-e AIMETER_SERVER_PORT=3000 \
-e AIMETER_BACKEND_PORT=3001 \
-e AIMETER_RUNTIME_MODE=node \
-v ~/aimeter/db:/aimeter/db \
-v ~/aimeter/log:/aimeter/log \
bugwz/aimeter:latestアクセス: http://localhost:3000
Docker Compose、HTTPS、MySQL/PostgreSQL、マルチアーキテクチャビルドの詳細: deploy/container/README.md
Serverless デプロイ。外部の MySQL または PostgreSQL データベースが必要です。
| DB | デプロイ |
|---|---|
| MySQL | |
| PostgreSQL |
環境変数を設定して bootstrap を完了後、外部 cron サービスで /api/system/jobs/refresh を 5 分ごとに呼び出します。
Cron 設定と完全な手順: deploy/vercel/README.md
Serverless デプロイ。Cloudflare D1、MySQL、PostgreSQL に対応。
デプロイ後、DB モードに応じて環境変数を設定してください:
| モード | 必須環境変数 |
|---|---|
| D1 | AIMETER_RUNTIME_MODE=serverlessAIMETER_SERVER_PROTOCOL=httpsAIMETER_DATABASE_ENGINE=d1AIMETER_DATABASE_CONNECTION=DB |
| MySQL | AIMETER_RUNTIME_MODE=serverlessAIMETER_SERVER_PROTOCOL=httpsAIMETER_DATABASE_ENGINE=mysqlAIMETER_DATABASE_CONNECTION=mysql://USER:PASSWORD@HOST:3306/DATABASE |
| PostgreSQL | AIMETER_RUNTIME_MODE=serverlessAIMETER_SERVER_PROTOCOL=httpsAIMETER_DATABASE_ENGINE=postgresAIMETER_DATABASE_CONNECTION=postgres://USER:PASSWORD@HOST:5432/DATABASE?sslmode=require |
Cron Triggers は組み込み済みで、wrangler.jsonc がデフォルトで 5 分ごとに自動リフレッシュをスケジュールします。
D1 バインディング、Hyperdrive、完全な設定手順: deploy/cloudflare/README.md
npm run dev # フロントエンドのみ
npm run start:server # バックエンドのみ
npm run dev:all # フロントエンド + バックエンド
npm run dev:mock:all # フロントエンド + バックエンド(mock モード)
npm run build # 型チェック + フロントエンドビルド
npm run preview # フロントエンドビルドをプレビュー
npm run cf:dev # Cloudflare Workers ローカル開発(Wrangler)
npm run cf:deploy # Cloudflare Workers へデプロイ現在の実装における設定ソースと優先順位:
config.yaml(またはAIMETER_CONFIG_FILEで指定したパス)- 環境変数
- 組み込みデフォルト
重要事項:
database.engine/AIMETER_DATABASE_ENGINEは必須。database.connection/AIMETER_DATABASE_CONNECTIONは必須。serverlessモードではスケジューラーは無効。nodeモードではプロセス内スケジューラーが自動起動。
詳細な項目マッピングと説明:
対応デプロイモードとドキュメント:
- DB モードでは、セッションシークレットおよび暗号化関連設定は bootstrap 時にシステムストレージへ初期化・永続化されます。
AIMETER_CRON_SECRETとAIMETER_ENDPOINT_SECRETは任意の統合シークレットです。指定する場合は 32 文字の強ランダム値を使用してください。- 本番環境では
AIMETER_SERVER_PROTOCOL=httpsを設定し、厳格なトランスポート関連セキュリティヘッダーを有効化してください。



