- Next.js 15 (App Router) / React 19 / TypeScript / SWR
- Tailwind CSS + shadcn/ui + Radix UI
- Framer Motion, GSAP
- Three.js, @react-three/fiber, postprocessing, ogl
- Vercel
- Node.js 20系以上を推奨
- 依存インストール:
npm install - 開発サーバー:
npm run dev(Turbopack) - 本番ビルド:
npm run build→npm start - Lint:
npm run lint
./
├── README.md
├── package.json / package-lock.json
├── next.config.ts / tailwind.config.ts / tsconfig.json
├── public/
├── src/
│ ├── app/
│ │ ├── globals.css … 共通スタイル
│ │ ├── layout.tsx … ルートレイアウト(LanguageProviderでラップ)
│ │ ├── page.tsx … TOPページ
│ │ ├── AboutUsPage/
│ │ ├── ContactPage/
│ │ ├── Fund&SponsorPage/
│ │ ├── MainPage/
│ │ ├── ProjectsPage/
│ │ └── TechPage/
│ ├── components/ui/ … shadcnベースのUI部品
│ ├── context/LanguageContext.tsx … 言語状態と`t`取得フック
│ ├── data/translations.ts … ja/enの文言辞書
│ └── lib/utils.ts
├── mock/moct.tsx
└── public/fonts, public/models … フォント・3Dモデル等
- レイアウトで
LanguageProviderを噛ませ、useLanguage()からlanguage,setLanguage,tを取得 (src/app/layout.tsx, src/context/LanguageContext.tsx). - 文言はtranslationsにja/enの両方を追加してから
t.foo.barで参照 (src/data/translations.ts). - ローカルに選択状態を保存するので、ブラウザ切替時も保持されます。
- TOP: src/app/page.tsx でヘッダー・フッターとヒーローギャラリー、ミッション一覧、SNSフィードを組み合わせ。MainHeroSection や OngoingMission など各セクションは
MainPage/components配下。 - About Us: src/app/AboutUsPage/page.tsx から Overview を表示。ミッション紹介・ギャラリー・チーム構成・開示プロトコルを
t.aboutUs文言で描画。旧セクション用に History, OverView, Teams も残存。 - Contact: src/app/ContactPage/page.tsx でフォーム (components/Contact.tsx) と相互リンク一覧 (components/sougolinks.tsx) を配置。背景演出に components/Background.tsx の光線シェーダーを用意(現在はコメントアウト)。
- Fund & Sponsors: src/app/Fund&SponsorPage/page.tsx でクラファン結果バナー、スポンサー一覧 (components/SponsorsList.tsx)、寄付案内 (components/Fund-Support.tsx) を表示。背景粒子は components/background.tsx。
- Projects: src/app/ProjectsPage/page.tsx がカテゴリフィルタ付きアーカイブ一覧を生成。データは ProjectData.tsx の配列を参照し、カテゴリ別メタ情報を表示。
- Tech/Blog: src/app/TechPage/page.tsx で固定ブログカードとQiita API記事を統合表示(
revalidate=10800)。記事型は blogpost.ts、Qiita取得は qiita/getqiita.ts。
→ 翻訳ファイルを編集します
手順:
- src/data/translations.ts を開く
- 変更したいセクション(例:
topPage,aboutUsなど)を探す - ja と en の両方を同時に編集 してください
- 変更後は
npm run devで動作確認
注意: page.tsx は翻訳ファイルを参照しているため、直接編集しても反映されません
→ ProjectData を編集します
手順:
- src/app/ProjectsPage/ProjectData.tsx を開く
projectsData配列に新しいオブジェクトを追加- 必須項目:
id,name,period,category,thumbnail,captionなど - カテゴリは「ロケット」「エンジン」「CanSat」から選択
例:
{
id: "22",
name: "C-99J(新機体)",
period: "2026/03",
category: "ロケット",
thumbnail: "/image.jpg",
altitude: "1000m",
caption: "説明文"
}→ これは自動取得ができます。Qiita API 設定を変更します
現状: Qiita API で特定クエリを検索し、記事を自動取得(3時間キャッシュ)
カスタマイズ方法:
- src/app/TechPage/qiita/getqiita.ts の L56 付近を確認
query=ESP32-S3の部分をあなたのタグ/キーワードに変更- 例:
query=CREATE ロケットで CREATE 関連記事を検索
- 例:
per_page=6で取得件数を調整- API トークンを
.env.localに設定(API_TOKEN=xxx)
更新頻度: TechPage の revalidate = 10800 で 3 時間ごと再検証
→ 現状はコードを変更しての手動更新です。YouTube API を活用します
現状: API 接続の基本は実装済み(fetchYoutubeVideos.ts 参照)
セットアップ:
- Google Cloud Console で YouTube Data API v3 を有効化
- API キーを
.env.localに追加(YOUTUBE_API_KEY=xxx) - src/app/MainPage/social/fetchYoutubeVideos.ts で チャネル ID を設定
→ ページファイルを直接編集するか API を統合します
現状: Twitter API は有料で未実装
案:
- 【簡易】 SNS フィード部分のハードコード → MainPage/components/Social.tsx を直接編集
- 【本格】 Twitter API v2(無料枠あり)を
.env.localに設定し、fetchTwitter.tsを作成
→ ページのコンポーネント構成を確認し、CSS / コンポーネントを編集します
確認手順:
- 変更したいページを特定(上の「ページ別ファイル」セクション参照)
- 該当の page.tsx と components/ を開く
- Tailwind CSS クラスを編集、またはコンポーネント構造を再配置
参考:
- About ページの グリッドレイアウト → Overview.tsx の
grid lg:grid-cols-12 - Projects ページの フィルタ機能 → ProjectsPage.tsx の
activeCategorystate
→ ページ構造に従い、step-by-step で作成します
最小限の手順:
src/app/MyNewPage/フォルダを作成page.tsxを作成し以下を記述:"use client" import Header from "@/components/ui/Header"; import Footer from "@/components/ui/Footer"; export default function MyNewPage() { return ( <div> <Header /> {/* ここにコンテンツ */} <Footer /> </div> ); }
- コンポーネントは
MyNewPage/components/下に分割 - 文言は translations.ts に
ja/enで追加 - ナビゲーションメニューに追加したい場合は Header.tsx を編集
→ 既存コンポーネントのパターンを参考にします
ライブラリ:
- Framer Motion → フェード、スライド、スケール アニメ
- Three.js → 3D オブジェクト、シェーダー
- GSAP → 複雑なシーケンスアニメ
参考実装:
- 粒子背景 → Fund&SponsorPage/components/background.tsx
- グリッドアニメ → AboutUsPage/Background.tsx
- 光線エフェクト → ContactPage/components/Background.tsx
→ .env.local ファイルを作成・編集します。これはローカル用のファイルであり、デプロイしたときはそのデプロイ先で環境変数を設定する必要があります。たとえばVercelを使っている場合は、Vercelのダッシュボードで環境変数を設定します。
例:
API_TOKEN=your_qiita_api_token
YOUTUBE_API_KEY=your_youtube_api_key
注意: .env.local は Git 管理から除外(.gitignore 参照)