HappyOnigiri のプロフィールサイト。
開発したプロダクトを一覧表示します。
リポジトリの開発メトリクス(コミット数、PR、CI 実行回数、言語比率など)を自動集計し、ダッシュボードとして表示します。
Tech stack: Astro 6 / React 19 / TailwindCSS 4 / TypeScript
# Node.js >=22.12.0
npm install| コマンド | 説明 |
|---|---|
npm run dev |
開発サーバー起動 (localhost:4321) |
npm run build |
プロダクションビルド → dist/ |
npm run preview |
ビルド成果物のプレビュー |
npm run lint |
Biome による静的解析 |
npm run check |
CI 相当の厳格チェック |
npm run format |
Biome + Prettier によるフォーマット |
npm run typecheck |
TypeScript 型チェック |
npm run test |
Vitest によるテスト実行 |
npm run test:coverage |
カバレッジ付きテスト |
npm run collect-metrics |
GitHub メトリクス収集 |
make ci |
lint + typecheck + test + build を一括実行 |
本番 URL は astro.config.mjs の site(https://onigiri-portal.vercel.app)と src/constants/site.ts の SITE_ORIGIN で管理しています。ドメインを変える場合は両方を同期してください。
- メタ・OGP(画像タグ除く)・Twitter Card・canonical —
src/layouts/BaseLayout.astro - 構造化データ(JSON-LD) — 各ページと
src/utils/structured-data.ts - サイトマップ —
@astrojs/sitemapによりビルド時にdist/sitemap-index.xmlが生成される - robots.txt —
public/robots.txt(Sitemap:は本番オリジンに合わせて更新)
- Search Console でプロパティを追加(URL プレフィックス
https://onigiri-portal.vercel.app/またはドメイン資源)。 - 所有権確認(HTML ファイル / DNS / Google Analytics 等、Vercel の案内に従う)。
- サイトマップに
https://onigiri-portal.vercel.app/sitemap-index.xmlを送信。 - 定期的に ページのインデックス登録・検索パフォーマンス・体験(コアウェブバイタル等)を確認。
- Bing Webmaster Tools に同様にサイトを登録し、サイトマップを送信するとよい。
- リリース後は リッチリザルトテスト で JSON-LD を spot check する。
- ゲーム等は別ドメインでホストしている。ポータル側の canonical は常に
onigiri-portal.vercel.app上の URL とし、ゲーム本体の評価は別プロパティ(別ドメイン)で見る。
.portal.yaml に定義されたリポジトリごとに以下を集計し、src/data/ に JSON として保存します。
- 追加・削除行数 —
git log --numstatからソースコード拡張子のみを対象にカウント(.gitattributesのlinguist-generated/linguist-vendoredは除外) - コミット数 —
git rev-list --countで算出 - マージ済み PR 数 / CI 実行回数 —
ghCLI で GitHub API から取得 - 言語比率 — 拡張子ごとの追加行数を言語グループに集約し、上位 10 言語を百分率で算出
- キャッシュ — デフォルトブランチの HEAD コミットハッシュと author 設定の HMAC をキーとし、変更がなければ再集計をスキップ
GitHub Actions により毎日 JST 2:00 に自動集計され、変更があれば src/data/author-status.json が自動コミットされます。workflow_dispatch による手動実行も可能です。
--local オプションで任意のローカルリポジトリも集計できます。.portal.yaml は不要で、author はCLI 引数で指定します。
# 全コミット対象
npm run collect-metrics -- --local /path/to/repo
# author を指定して絞り込み
npm run collect-metrics -- --local /path/to/repo \
--author-email "user@example.com" \
--author-email "12345+user@users.noreply.github.com" \
--author-name "User Name" \
--author-github "username" \
--output ./metrics.jsonsrc/data/ 以下を除くプログラム部分は MIT License の下で公開されています。
src/data/ 以下のデータファイルはライセンスの対象外です。