メインコンテンツまでスキップ

広報Web 仕様書

蒼翔祭の広報用 Web サイト(packages/web/soshosai-promotion)の仕様書です。

本書はコードから機械的に確認できる事実のみを記載した初版です。設計意図・運用ルール・今後の方針は広報用Webチームによる追記が必要です。空の節はそのために残してあります。

1. システム概要​

1.1 目的​

1.2 技術スタック​

区分採用技術
フレームワークNext.js(App Router)
言語TypeScript
UIReact
コンポーネントRadix UI(accordion / dialog / navigation-menu / separator / slot)
スタイルTailwind CSS(tailwind-merge, class-variance-authority)
アイコンlucide-react
日本語の改行制御budoux

他パッケージが Cloudflare Workers 中心であるのに対し、本パッケージは Next.js アプリである点が異なります。

1.3 パッケージ名​

@soshosai/web-soshosai-promotion

2. 画面構成​

src/app 配下のルーティングは以下のとおりです。

パスファイル内容
/src/app/page.tsx
/eventsrc/app/event/page.tsx
/informationsrc/app/information/page.tsx
/reservationsrc/app/reservation/page.tsx
/sponsorsrc/app/sponsor/page.tsx
/visitorsrc/app/visitor/page.tsx
/contactsrc/app/contact/page.tsx
/privacypublic/privacy.htmlプライバシーポリシー。App Router のページではなく静的 HTML

/privacy は Workers Static Assets の html_handling: auto-trailing-slash が、拡張子の無いパスを privacy.html に当てて返します。静的書き出しでは rewrites() が使えないため、#894 で削除しました。

3. 設定​

3.1 画像​

next.config.ts は output: 'export'(静的書き出し)で、images.unoptimized: true です。

  • 静的書き出しには Next.js の画像最適化サーバーが無いため、画像は public/ のファイルをそのまま配信します
  • 軽量化は、public/ に置く前に WebP へ変換しておくことで行います

3.2 middleware​

middleware.ts はありません。静的書き出しでは middleware が動かないため、#894 で削除しました。

公開日時で表示を切り替えるゲート(RELEASE_UTC_TS)も、あわせて廃止しています(TBD-001)。

3.3 OGP 画像​

public/images/ogp.jpg(1200x630)を、Open Graph と X(Twitter)カードの共有画像に使います。

  • 公式テーマロゴ public/images/soshosai-theme-logo-2026.webp と、テーマカラー、開催日を合成したものです
  • 開催日やロゴが変わったときは作り直してください

4. コマンド​

コマンド用途
pnpm dev開発サーバー起動
pnpm build静的書き出し(./out)
pnpm preview書き出した ./out を wrangler dev で配信して確認
pnpm deploy / pnpm deploy:stg / pnpm deploy:preprod各環境へデプロイ(通常は CI が実行する)
pnpm lint / pnpm lint:fixLint
pnpm typecheck型チェック

5. デプロイ​

Worker 2026-promotion(assets-only の Workers Static Assets)として、他の Worker と同じ deploy-*.yml から配信します。

  • デプロイの起点
    • 他の Worker と同じです。docs/files/guides/deploy-pipeline.md を参照してください
  • 環境と公開先
    • production: soshosai.com(切替前は routes 無し。下記)
    • staging: promo.stg.soshosai.com
    • preproduction: promo.preprod.soshosai.com
  • stg / preprod の検索除外
    • deploy:stg / deploy:preprod は、scripts/write-noindex-headers.mjs で out/_headers に X-Robots-Tag: noindex を書いてからデプロイします
    • 本番の deploy はこれを呼びません
  • 本番ドメインの切替
    • soshosai.com は、旧リポジトリの Pages プロジェクト 2025-promotion がまだ握っています
    • 切替手順は docs/files/guides/deploy-pipeline.md の「広報Web の cutover」にあります

6. 非機能要件​

7. 決定ログ​

本システムの要確定事項と、その決着状況を一覧で管理する。表の形式は全システム共通(.agents/skills/edit-specification/SKILL.md「決定ログの書式」を参照)。

状態 は 未確定 / 保留 / 決定済み / 対象外 のいずれかを取る。

ID分類判断が必要な内容状態期限結論
TBD-001middleware公開日時ゲート(RELEASE_UTC_TS)を復活させるか、恒久的に削除するか決定済み—削除。静的書き出しでは middleware が動かないため、#894 で middleware.ts ごと削除した