PyCon JP 2025 の公式ウェブサイトのソースコードです。
このプロジェクトは、PyCon JP 2025の公式サイトで、日本語と英語の2言語対応の静的サイトです。Next.js 15を使用し、Google SheetsとBlogger APIから動的にコンテンツを取得します。
- フレームワーク: Next.js 15.3.2 (SSG - Static Site Generation)
- 言語: TypeScript 5, React 19
- スタイリング: Tailwind CSS 4
- コンテンツ管理: MDX
- デプロイ: Cloudflare Pages
- 外部API: Google Sheets API, Blogger API
- Node.js 18以上
- npm または yarn
-
リポジトリをクローン
git clone https://github.com/pyconjp/pycon.jp.2025.git cd pycon.jp.2025 -
依存関係をインストール
npm install
-
環境変数を設定
cp .env.local.example .env.local
.env.localファイルに必要な環境変数を設定してください:- Google API認証情報(Sheets APIとBlogger API用)
-
開発サーバーを起動
npm run dev
http://localhost:3000 にアクセスして確認してください。
npm run dev # 開発サーバーの起動(Turbopack使用)
npm run build # プロダクションビルド(サイトマップ生成含む)
npm start # プロダクションサーバーの起動
npm run lint # ESLintチェック
# ビルド前処理
npm run pre-build # ビルド前にGoogle Drive画像同期とPretalxデータ取得を実行
npm run pre-build:dev # 開発環境用(.envファイル使用)pre-buildスクリプトは、Next.jsのビルド前に以下の処理を自動実行します:
-
Google Drive画像同期
- 設定されたGoogle Driveフォルダから画像をダウンロード
- Cloudflare Imagesへ自動アップロード
- メンバーやスポンサーの画像を最新化
-
Pretalxデータ取得
- カンファレンスのスケジュールデータをフェッチ
- スピーカー情報の同期
npm run build実行時に自動的にpre-buildが呼ばれるため、通常は個別に実行する必要はありません。
src/
├── components/
│ ├── elements/ # 基本UIコンポーネント
│ ├── sections/ # ページセクション(Header, Footer, Hero等)
│ ├── layout/ # レイアウトコンポーネント
│ └── markdown/ # MDXコンテンツ(言語別)
├── pages/
│ └── [locale]/ # 言語別のページ(ja/en)
├── libs/ # APIクライアント等のライブラリ
├── lang/ # 言語辞書ファイル
└── types/ # TypeScript型定義
- URLパス:
/ja/...または/en/... - 言語辞書:
/src/lang/ja.tsと/src/lang/en.ts - MDXコンテンツ:
/src/components/markdown/[ja|en]/ - Cookieベースの言語設定保持
- スポンサー情報
- スタッフ・メンバー情報
- ニュース・ブログ記事
MDXファイルを直接編集:
/src/components/markdown/ja/- 日本語コンテンツ/src/components/markdown/en/- 英語コンテンツ
- スポンサー情報:Google Sheetsを更新後、再ビルド
- ニュース:Blogger管理画面から投稿
mainブランチへのpush時に自動的にCloudflare Pagesへデプロイされます。