この構成の公開先は静的なGitHub Pagesです。Node.js、Express、Raspberry Pi上のAPIサーバーは公開先で動かしません。Supabaseの認証・データベース・Realtimeを両画面から利用します。
node_modules、.env、server/data、既存のZIPファイルはアップロード不要です。.gitignoreで除外しています。mainへpushすると、.github/workflows/pages.ymlがテスト・ビルド・公開を実行します。別の既定ブランチを使う場合は、このファイルのbranches: [main]を書き換えてください。Actions画面の Run workflow でも実行できます。| Repository variable | 値 |
|---|---|
VITE_SUPABASE_URL |
https://<project-ref>.supabase.co |
VITE_SUPABASE_PUBLISHABLE_KEY |
Supabaseのpublishable key |
Repository variablesは Settings → Secrets and variables → Actions → Variables で追加します。これらはブラウザーに渡す公開設定です。service_role、secret key、データベースパスワードは登録しません。
ODPTトークンは各ブラウザーの設定画面へ入力します。公開ワークフローはODPTトークンをビルドへ埋め込みません。
リポジトリがhttps://github.com/example/D-TISなら、公開先は次のようになります。
| 画面 | URL |
|---|---|
| 案内ページ | https://example.github.io/D-TIS/ |
| Signage | https://example.github.io/D-TIS/signage/ |
| Controller | https://example.github.io/D-TIS/controller/ |
ユーザー用リポジトリexample.github.ioや独自ドメインでは、/D-TIS/部分がなくなります。ワークフローがGitHub Pagesのbase_pathを取得し、画面・画像・フォントのURLを自動調整します。
Node.js 22以降を使用します。
npm ci
npm test
npm run build
npm run preview
案内ページはhttp://localhost:4173/、Signageはhttp://localhost:4173/signage/、Controllerはhttp://localhost:4173/controller/です。公開と同じ静的ファイルを確認できます。npm run devは開発用に案内ページ5175、Signage5173、Controller5174で起動します。
リポジトリのサブパスも確認する場合は、PAGES_BASEを指定してビルドします。
$env:PAGES_BASE = '/D-TIS/'
npm run build
npm run preview
PAGES_BASE=/D-TIS/ npm run build
npm run preview
この場合はhttp://localhost:4173/D-TIS/を開きます。プレビューはビルド済みのパスを自動で読みます。
npm run buildで次の静的パッケージを生成します。
dist/
index.html
controller/index.html
signage/index.html
assets/ 共有ロゴ・駅ナンバリング
bundles/ 案内ページのJavaScript・CSS・フォント
.nojekyll
build-metadata.json
各アプリのbundles/も各フォルダー内に生成します。GitHub Actionsはdist/だけを公開します。server/とPi用のインストールスクリプトは以前の構成の資料として残しています。
*:legacyコマンドも旧サーバーの資料・診断用です。フロントエンドはクラウド方式へ変更されているため、旧LANアプリ全体を起動するものではありません。
ビルド後にnpm run test:e2eで、静的なSignageとControllerを実際のブラウザーで開いて検証できます。Windowsではインストール済みのChromeを使用します。ほかの環境では、あらかじめnpx playwright install chromiumを実行するか、PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATHに実行ファイルのパスを指定してください。
Supabase Auth・REST・Realtimeはローカルのテスト内で模擬します。運用中のSupabaseや本物のログイン情報は使いません。描画後の記録、Controllerからの再照会、停止・再開、保存エラー時の復元、記録後のHTTP応答喪失からの復旧、ページ更新後の復元、実画面のJPEG転送を確認します。画面共有の取得部分にテスト用canvasを渡し、実際のWebRTCによる映像伝送と停止後の画像への切り替えも確認します。実際のSupabaseへの接続・権限・別ネットワーク間の映像共有は、設定後に別途確認してください。