Peace Biz コーポレートサイト(React + TypeScript + CRA)のリポジトリです。
GitHub Pages へ自動デプロイし、独自ドメイン https://peace-biz.com で公開します。
react-scripts)motion)npm install
npm start
npm run build
npm start: ローカル開発サーバー起動npm run build: 本番ビルド + 静的ルートファイル生成npm run sync:ai-context: public/llms.txt / public/ai-context.json を最新化npm run sync:seo-artifacts: public/sitemap.xml / public/llms.txt / public/ai-context.json を最新化npm run verify:generated-artifacts: 生成物3ファイルのコミット漏れを検出npm start / npm run build 実行時は、AI参照用メタデータ(llms.txt / ai-context.json)も自動更新されます。
また npm run build では、旧URL互換のために build/ 配下へレガシーアセットエイリアスを自動生成します。
src/data/content/news.json や src/data/content/works.json を更新した場合は、コミット前に npm run sync:seo-artifacts と npm run verify:generated-artifacts を実行してください。
public/ のルート直下は最小限に保ち、用途別に以下へ集約しています。
public/assets/images/brandpublic/assets/images/aboutpublic/assets/images/servicespublic/assets/images/toppublic/assets/images/newspublic/assets/images/workspublic/assets/videos制作元の未配信用画像は assets-source/ に配置し、デプロイ対象から分離しています。
GitHub Pages は静的ホスティングのため、フロントエンドに秘密鍵を置く方式は安全ではありません。
このリポジトリでは、Contact フォームを以下の構成で運用します。
REACT_APP_CONTACT_API_URL の公開エンドポイントに送信workers/contact-proxy) が受信WEB3FORMS_ACCESS_KEY は Worker Secret として保持(フロントには一切配布しない)ALLOWED_ORIGINS で制限direct(Web3Forms) / proxy(Worker) を順次試行フロントの設定:
REACT_APP_CONTACT_API_URLREACT_APP_WEB3FORMS_ACCESS_KEY(proxy障害時の自動フォールバック用).env.production.local に設定(.gitignore 対象)REACT_APP_CONTACT_API_URL に設定.env.production.examplecp .env.production.example .env.production.local
Worker デプロイ例:
cd workers/contact-proxy
npx wrangler secret put WEB3FORMS_ACCESS_KEY
npx wrangler secret put ALLOWED_ORIGINS
npx wrangler deploy
ALLOWED_ORIGINS 例: https://peace-biz.com,https://peace-biz-corporate-site.pages.devREACT_APP_CONTACT_API_URL に設定してください。curl -sS https://<worker-domain>/healthmain ブランチへの push で .github/workflows/deploy-github-pages.yml が実行され、GitHub Pages に自動反映されます。
処理内容:
npm ciCI=false npm run buildbuild/ を Pages Artifact としてアップロード補足:
REACT_APP_CONTACT_API_URL と REACT_APP_WEB3FORMS_ACCESS_KEY の両方が未設定の場合に失敗します。REACT_APP_WEB3FORMS_ACCESS_KEY でもビルド可能ですが、これはキーがフロントに露出するため本番では非推奨です。SPA の直接アクセス(例: /works)で 404 を防ぐために、以下を併用しています。
public/404.html(SPA redirect)scripts/generate-static-routes.js(主要ルートに index.html を生成)主な公開ルート:
//about /company/services/services/it-solution/services/eco-solution/services/office-solution/works /work/works/:slug /work/:slug/news/news/:slug/contact/recruit/privacy/sitepolicy /termsコンテンツデータ:
src/data/content/news.jsonsrc/data/content/works.json一覧ページはページネーションを実装しています。NEWS_PAGE_SIZE / WORKS_PAGE_SIZE で件数を調整できます。
public/robots.txtpublic/sitemap.xmlpublic/index.html に favicon / OGP / Organization 構造化データを設定デプロイ後の確認 URL:
https://peace-biz.com/robots.txthttps://peace-biz.com/sitemap.xmlpublic/favicon_io/ に favicon 一式を配置し、public/index.html と public/manifest.json で参照しています。
CNAME: peace-biz.compackage.json の homepage: https://peace-biz.comsitemap.xml が 404 のままになる場合があります。