Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
139 changes: 139 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# AGENTS.md

このファイルはAIエージェント(Claude Code等)がこのリポジトリで開発する際のガイドラインです。

## プロジェクト概要

CloudNative Days (<https://cloudnativedays.jp>) の公式ウェブサイト。Astro + TypeScript + Tailwind CSS で構築された静的サイト。

## 技術スタック

- **フレームワーク**: Astro 5.x(静的サイトジェネレータ)
- **言語**: TypeScript
- **スタイリング**: Tailwind CSS
- **CMS**: Notion(ブログ記事)
- **ホスティング**: AWS S3 + CloudFront

## 重要なファイル・ディレクトリ

### データ管理

```text
src/data/
├── data.ts # イベント・スピーカー・トークのエクスポート(新イベント追加時に編集必須)
├── events/ # イベント情報 JSON
├── speakers/ # スピーカー情報 JSON
└── talks/ # トーク情報 JSON
```

### 型定義

```text
src/types/
├── conference.ts # Conference, ConferenceDay 型
├── speaker.ts # Speaker 型
└── talk.ts # Talk 型
```

### ページ

```text
src/pages/
├── index.astro # トップページ
├── [abbr].astro # イベント詳細ページ(動的ルーティング)
├── history.astro # イベント履歴
├── posts/ # ブログ関連ページ
└── *.md # 静的Markdownページ(CoC、プライバシーポリシー等)
```

### コンポーネント

```text
src/components/ # 再利用可能なAstroコンポーネント
src/layouts/ # レイアウトコンポーネント
```

### Notion連携

```text
src/lib/notion/
├── client.ts # Notion APIクライアント
├── responses.ts # レスポンス型定義
└── request-params.ts
```

## よくある開発タスク

### 新しいイベントを追加する

1. `src/data/events/{eventname}.json` を作成
2. `src/data/speakers/{eventname}.json` を作成(空配列 `[]` でも可)
3. `src/data/talks/{eventname}.json` を作成(空配列 `[]` でも可)
4. `src/data/data.ts` の `events` 配列に `'{eventname}'` を追加

**イベントJSONの必須フィールド**:

```json
{
"id": 数値,
"name": "イベント名",
"abbr": "略称(URLパスに使用)",
"status": "registered",
"theme": "テーマ",
"image": "/images/assets/{abbr}.svg",
"venue": "会場名",
"location": "開催地",
"format": "offline" | "online" | "hybrid",
"about": "イベント説明",
"privacy_policy": "",
"privacy_policy_for_speaker": "",
"copyright": "© ...",
"coc": "Code of Conduct テキスト",
"conferenceDays": [
{ "id": 数値, "date": "YYYY-MM-DD", "internal": false }
]
}
```

### ページを追加する

- `src/pages/` に `.astro` または `.md` ファイルを作成
- ファイルパスがそのままURLになる(例: `src/pages/foo.astro` → `/foo`)

### コンポーネントを追加する

- `src/components/` に `.astro` ファイルを作成
- 命名規則: PascalCase(例: `MyComponent.astro`)

## コマンド

```bash
npm run dev # 開発サーバー起動
npm run build # 本番ビルド
npm run preview # ビルド結果プレビュー
npm run lint # コードチェック(ESLint + Prettier)
npm run format # コードフォーマット
```

## コーディング規約

- **TypeScript**: 厳密な型付けを使用
- **コンポーネント**: Astroコンポーネント(`.astro`)を優先、インタラクティブな部分のみReact
- **スタイリング**: Tailwind CSSのユーティリティクラスを使用
- **フォーマット**: Prettier で整形(`npm run format`)

## 注意点

- **環境変数**: ブログ機能には `NOTION_API_SECRET` と `DATABASE_ID` が必要
- **画像**: イベントロゴは `/public/images/assets/` に配置
- **ビルド確認**: 変更後は `npm run build` でビルドエラーがないか確認
- **型チェック**: 新しいデータ追加時は型定義と整合性を確認

## デプロイ

GitHub Actions で自動デプロイ(タグプッシュ時):

```bash
git tag vX.X.X
git push --tags
```
104 changes: 81 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,100 @@
# CloudNative Days website
# CloudNative Days Website

cloudnativedays.jpのウェブサイトを管理するリポジトリです。Astroを使って構築しています。
[cloudnativedays.jp](https://cloudnativedays.jp) のオフィシャルウェブサイトです。

日本最大のCloud Native技術の祭典「CloudNative Days」の情報発信プラットフォームとして、イベント情報、ブログ記事、スピーカー・セッション情報などを提供しています。

## 技術スタック

| カテゴリ | 技術 |
| -------------- | --------------------------------- |
| フレームワーク | [Astro](https://astro.build/) 5.x |
| 言語 | TypeScript |
| スタイリング | Tailwind CSS |
| CMS | Notion (ブログ記事管理) |
| ホスティング | AWS S3 + CloudFront |

## 🚀 Getting Started

### Prerquisites
### Prerequisites

- Node.js(v16)
- Node.js v18以上
- npm

### How to setup a development environment
### 環境変数

1. Install Node.js
2. `npm install`
ブログ機能を利用する場合、以下の環境変数が必要です:

That's it.
| 変数名 | 説明 | 必須 |
| ----------------------- | ---------------------------------------------- | ---------------- |
| `NOTION_API_SECRET` | Notion API シークレットキー | ブログ機能使用時 |
| `DATABASE_ID` | Notion データベース ID | ブログ機能使用時 |
| `PUBLIC_GA_TRACKING_ID` | Google Analytics トラッキング ID | 任意 |
| `CUSTOM_DOMAIN` | カスタムドメイン (例: `cloudnativedays.jp`) | 任意 |
| `BASE_PATH` | サブディレクトリパス (例: `/docs/`) | 任意 |

### Run local dev server
### セットアップ

`npm run dev`
```bash
# 依存関係のインストール
npm install

### Build
# 開発サーバーの起動
npm run dev
```

`npm run build`
ブラウザで <http://localhost:4321> を開いてください。

## 📁 ディレクトリ構造

```text
src/
├── pages/ # ページ(ファイルベースルーティング)
├── components/ # Astro/React コンポーネント
├── layouts/ # レイアウトコンポーネント
├── data/ # 静的データ
│ ├── events/ # イベント情報 (JSON)
│ ├── speakers/ # スピーカー情報 (JSON)
│ └── talks/ # トーク情報 (JSON)
├── lib/ # ユーティリティ・Notion API連携
├── types/ # TypeScript 型定義
└── styles/ # グローバルスタイル
```

## 🧞 Commands

All commands are run from the root of the project, from a terminal:
| Command | Action |
| ----------------------- | -------------------------------------- |
| `npm install` | 依存関係のインストール |
| `npm run dev` | 開発サーバーの起動 |
| `npm run build` | 本番用ビルド (`./dist/` に出力) |
| `npm run build:cached` | キャッシュ取得後にビルド |
| `npm run preview` | ビルド結果のプレビュー |
| `npm run format` | Prettier でコードフォーマット |
| `npm run lint` | ESLint + Prettier でコードチェック |
| `npm run cache:fetch` | Notion からブログキャッシュを取得 |
| `npm run cache:purge` | キャッシュのクリア |

## 🚢 デプロイ

GitHub Actions を使用して自動デプロイされます。

1. タグをプッシュ (`git tag vX.X.X && git push --tags`)
2. Astro でビルド
3. S3 へ同期
4. CloudFront キャッシュ無効化

## 📝 イベントデータの追加

新しいイベントを追加する場合:

| Command | Action |
| :--------------------- | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:3000` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro --help` | Get help using the Astro CLI |
1. `src/data/events/` に新しい JSON ファイルを作成
2. `src/data/speakers/` にスピーカー情報を追加
3. `src/data/talks/` にトーク情報を追加
4. `src/data/data.ts` でデータをインポート・エクスポート

## 👀 Want to learn more?
## 📚 参考リンク

Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
- [Astro Documentation](https://docs.astro.build)
- [Tailwind CSS Documentation](https://tailwindcss.com/docs)
- [Notion API Documentation](https://developers.notion.com/)
Loading