Skip to content

Next.js 15 + Tailwind CSS v4 への移行#29

Open
pi-kari wants to merge 10 commits into
mainfrom
nextjs-tailwind-migration
Open

Next.js 15 + Tailwind CSS v4 への移行#29
pi-kari wants to merge 10 commits into
mainfrom
nextjs-tailwind-migration

Conversation

@pi-kari
Copy link
Copy Markdown

@pi-kari pi-kari commented May 23, 2026

概要

静的 HTML/SCSS で構成されていた HiCoder-site/ を撤去し、Next.js 15 (App Router) + Tailwind CSS v4 ベースのサイトに全面リプレースします。あわせてツールチェーン (Biome / react-icons) の整理と GitHub Pages 自動デプロイ、note ブログの RSS 取り込み機能を追加しています。

主な変更

  • フレームワーク移行: 静的サイト → Next.js 15 App Router + TypeScript
  • スタイル: SCSS → Tailwind CSS v4 (tailwind.config.ts, app/globals.css)
  • コンポーネント化: Header / Hero / About / News / Recruitment / Faq / Contact / Footer / Reveal / ScrollTop を components/ に分割
  • NEWS セクション: note RSS をクライアント側 fetch で動的取得 (lib/blog.ts)
  • アイコン: @fortawesome/* から react-icons へ置き換え
  • Lint/Format: Biome (biome.json) を導入
  • CI/CD: GitHub Pages へ自動デプロイする workflow (.github/workflows/deploy.yml) と public/CNAME を追加
  • アセット: 画像を public/assets/img/ に再配置

動作確認

  • pnpm install 後、pnpm dev でローカル起動し各セクション (Hero / About / News / Recruitment / FAQ / Contact) の表示を確認
  • note RSS から最新記事が NEWS セクションに表示されることを確認
  • pnpm build がエラー無く完了することを確認
  • Header のナビゲーション / モバイルメニュー / スクロール挙動を確認
  • GitHub Pages へのデプロイ workflow が成功することを確認

マージ方針

10 コミットを履歴に残さず 1 コミットにまとめたいため squash merge でマージしてください。

pi-kari and others added 10 commits May 23, 2026 09:31
Replace legacy HTML/SCSS/JS site (HiCoder-site/) with Next.js App Router
static export. Components: Header, Hero, About, News, Recruitment, FAQ,
Contact, Footer, ScrollTop, Reveal. Images moved to public/assets/img/.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace hardcoded 2021 news items with live blog posts from
blog.hicoder.one, fetched at build time via RSS. Adds lib/blog.ts
(fast-xml-parser, slug→thumbnail map, link normalization). News cards
now show thumbnail image, date, title, and description with a link to
each post. "もっと見る" button links to the blog top.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace build-time server fetch with client-side useEffect fetch so new
blog posts appear without redeploying the main site. News.tsx is now a
'use client' component; lib/blog.ts uses native DOMParser instead of
fast-xml-parser (removed). CORS is open on blog.hicoder.one/rss.xml
(access-control-allow-origin: *).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Expand "もっと見る" button to full width in NEWS section
- Use new Date().getFullYear() for copyright year in Footer

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Bump all packages to latest (React 19.2, FA v7, react-fontawesome v3, Swiper v12, @types/node 24)
- Migrate Tailwind CSS v3 → v4 with @tailwindcss/postcss; remove autoprefixer
- Replace ESLint + eslint-config-next with Biome (lint + format)
- Fix broken `next lint` script (removed in Next 16) → `biome check .`
- Add "type": "module" to silence ES module warning
- Fix lint: add type="button", replace array index keys, a11y fixes
- Fix image aspect ratio warnings: logo priority, recruitment height={228}

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds .github/workflows/deploy.yml to build with pnpm/Next.js and
deploy the static export to GitHub Pages on push to main. CNAME
(hicoder.one) is preserved via public/CNAME → out/CNAME.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4パッケージ (@fortawesome/*) を react-icons 1パッケージに置き換え。
Twitter アイコンは FaXTwitter (現X ロゴ) に更新。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant