個人ブログサイト「いぶろぐ雑記」のソースコードです。
- Astro - 静的サイトジェネレーター
- TypeScript - 型安全性の確保
- Alpine.js - 状態管理
- Vite - ビルドツール
- Tailwind CSS
- Astro Content Layer API - ブログ記事の管理
- MDX - Markdown拡張
- microCMS - 外部コンテンツ管理(自己紹介、職歴)
- Shiki - シンタックスハイライト
- @shikijs/transformers - コードブロックの拡張機能(diff、highlight、focus)
- @astrojs/rss - RSSフィード生成
- @astrojs/sitemap - サイトマップ生成
- @astrojs/partytown - サードパーティスクリプトの最適化(Google Analytics)
- @astrojs/alpinejs - Alpine.js統合
- open-graph-scraper - OGPデータの取得(リンクカード用)
- remark-breaks - Markdownの改行処理
- カスタムremarkプラグイン - コードブロック、リンクカードの拡張
ibulog-blog/
├── docs/ # デザインルールドキュメント
├── public/ # 静的ファイル
├── src/
│ ├── assets/ # 画像アセット(Astroで最適化)
│ ├── components/ # コンポーネント
│ │ └── ui/ # UIコンポーネント
│ ├── data/ # コンテンツデータ(MDXファイル)
│ ├── layouts/ # レイアウトコンポーネント
│ ├── pages/ # ページ(ファイルベースルーティング)
│ ├── remark/ # カスタムremarkプラグイン
│ ├── styles/ # グローバルスタイル
│ ├── utils/ # ユーティリティ関数
│ ├── config.ts # グローバル設定
│ ├── content.config.ts # コンテンツコレクション設定
│ └── entrypoint.ts # Alpine.jsエントリーポイント
├── astro.config.mjs
├── tailwind.config.mjs
└── package.json
components/ui/: 再利用可能な基本的なUIコンポーネントcomponents/: 機能を持つ複合コンポーネントlayouts/: ページレイアウトを定義するコンポーネント
プロジェクトでは一貫性のあるデザインシステムを維持するため、以下のルールドキュメントを定義しています:
docs/typography-rules.md: フォントサイズ、フォントウェイト、行間の統一ルールdocs/spacing-rules.md: パディング、マージン、ギャップの統一ルールdocs/color-rules.md: カラーパレットと使用パターンの統一ルール
src/config.ts: サイト全体で使用する定数(タイトル、URL、ナビゲーション、ページ種別、タグなど)src/content.config.ts: コンテンツコレクションのスキーマ定義
# 依存関係のインストール
npm install
# 開発サーバーの起動
npm run dev
# ビルド
npm run build
# プレビュー
npm run preview.envファイルに以下の環境変数を設定してください:
MICROCMS_SERVICE_DOMAIN=your-service-domain
MICROCMS_API_KEY=your-api-key
- 記事一覧(ページネーション対応)
- 記事詳細ページ
- タグによる記事フィルタリング
- 記事目次(自動生成、スティッキー対応)
- RSSフィード
- ダークモード対応
- レスポンシブデザイン
- 画像最適化(Astro Image)
- OGP対応
- サイトマップ自動生成
- Google Analytics統合(Partytown経由)
- インタラクティブなUI(Alpine.js)
- モバイルメニューの展開/折りたたみ
- 記事目次バーの表示/非表示
- スムーズなスクロールアニメーション