株式会社YOSHINANIのモノレポテンプレートプロジェクトです。Turborepoを使用しており、Next.jsアプリケーションとshadcn/uiベースのUIコンポーネントライブラリを含んでいます。
yoshinani-template-base/
├── apps/
│ └── web/ # Next.jsアプリケーション
├── packages/
│ └── ui/ # shadcn/uiベースのUIコンポーネントライブラリ
├── turbo.json # Turborepo設定
├── pnpm-workspace.yaml # pnpm workspace設定
└── mise.toml # mise設定(Node.js/pnpmバージョン管理)
- Monorepo: Turborepo
- パッケージマネージャー: pnpm
- ランタイム管理: mise
- フレームワーク: Next.js 16 (App Router)
- cachedComponents: 有効化済み
- reactCompiler: 有効化済み
- UI: React 19, shadcn/ui, Tailwind CSS 4
- 言語: TypeScript 5.9
- リンター: ESLint
- フォーマッター: Biome
- スタイルガイド: @yoshinani/style-guide
- テスト: Vitest
- CI/CD: GitHub Actions
- 環境変数管理: @t3-oss/env-nextjs
- バリデーション: Valibot
- Node.js >= 22
- pnpm 10.12.4
- mise (推奨: バージョン管理用)
git clone git@github.com:yoshinani-dev/yoshinani-template-base.git
cd yoshinani-template-basemiseを使用する場合(推奨):
mise install
pnpm installmiseを使用しない場合:
# Node.js 22以上とpnpm 10.12.4を手動でインストール
pnpm installこのプロジェクトで使用しているVS Codeの推奨拡張機能をインストールすることを推奨します:
- Biome: コードフォーマッター
- Tailwind CSS IntelliSense: Tailwind CSSの補完
- ESLint: コードの静的解析
- dotenv: 環境変数ファイルのシンタックスハイライト
- Code Spell Checker: スペルチェック
- Vitest: テストランナー
VS Codeでプロジェクトを開くと、推奨拡張機能のインストールを促すプロンプトが表示されます。手動でインストールする場合は、Cmd+Shift+P(Mac)またはCtrl+Shift+P(Windows/Linux)を押して「Extensions: Show Recommended Extensions」を実行してください。
このプロジェクトでは@t3-oss/env-nextjsとvalibotを使用して環境変数を管理しています。環境変数を追加する場合は、apps/web/env.tsを編集してください。
server: {
DATABASE_URL: v.string(),
API_SECRET_KEY: v.string(),
},クライアントで使用する環境変数はNEXT_PUBLIC_プレフィックスが必要です:
client: {
NEXT_PUBLIC_API_URL: v.string(),
NEXT_PUBLIC_APP_NAME: v.string(),
},serverとclientに追加したすべての環境変数をruntimeEnvにも追加する必要があります:
runtimeEnv: {
// server
DATABASE_URL: process.env.DATABASE_URL,
API_SECRET_KEY: process.env.API_SECRET_KEY,
// client
NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL,
NEXT_PUBLIC_APP_NAME: process.env.NEXT_PUBLIC_APP_NAME,
},環境変数の実際の値は.env.localファイルに設定してください:
# .env.local
DATABASE_URL=postgresql://localhost:5432/my-db
API_SECRET_KEY=your-secret-key
NEXT_PUBLIC_API_URL=https://api.example.com
NEXT_PUBLIC_APP_NAME="My App"すべてのアプリケーションの開発サーバーを起動:
pnpm devapps/webが http://localhost:3000 で起動します。
特定のパッケージのみを開発する場合:
# webアプリのみ
pnpm --filter web dev| スクリプト | 説明 |
|---|---|
pnpm dev |
すべてのアプリケーションの開発サーバーを起動 |
pnpm build |
すべてのパッケージをビルド |
pnpm check |
リンターとフォーマッターを実行(修正なし) |
pnpm check:ci |
リンターとフォーマッターを実行(自動修正) |
pnpm format |
Biomeでフォーマット(自動修正) |
pnpm format:ci |
Biomeでフォーマット(CI用、修正なし) |
pnpm test |
すべてのパッケージのテストを実行 |
| スクリプト | 説明 |
|---|---|
pnpm --filter web dev |
開発サーバーを起動(Turbopack使用) |
pnpm --filter web build |
プロダクションビルド |
pnpm --filter web start |
プロダクションサーバーを起動 |
pnpm --filter web test |
テストを実行 |
| スクリプト | 説明 |
|---|---|
pnpm --filter @repo/ui generate:component |
Reactコンポーネントを生成 |
pnpm --filter @repo/ui ui add <component> |
shadcn/uiコンポーネントを追加(例: pnpm --filter @repo/ui ui add button) |
# すべてのテストを実行
pnpm test
# 特定のパッケージのテスト
pnpm --filter web test# すべてのパッケージをビルド
pnpm build
# 特定のパッケージをビルド
pnpm --filter web buildpackages/uiでshadcn/uiコンポーネントを追加:
cd packages/ui
pnpm dlx shadcn@latest add button
# または
pnpm ui add button複数のコンポーネントを一度に追加することもできます:
pnpm dlx shadcn@latest add button card dialogpackages/またはapps/ディレクトリに新しいパッケージを作成package.jsonを作成pnpm-workspace.yamlにパッケージが含まれていることを確認(デフォルトでpackages/*とapps/*が含まれています)- ルートで
pnpm installを実行
このプロジェクトでは以下のツールを使用してコード品質を保証しています:
- ESLint: コードの静的解析(リンター)
- Biome: コードフォーマッター
- TypeScript: 型チェック
リンター・フォーマッターのルールセットには@yoshinani/style-guideを使用しています:
- ESLint設定:
apps/web:@yoshinani/style-guide/eslint/nextpackages/ui:@yoshinani/style-guide/eslint/react-internal
- Biome設定:
@yoshinani/style-guide/biome - TypeScript設定:
apps/web:@yoshinani/style-guide/typescript/nextjspackages/ui:@yoshinani/style-guide/typescript/react-library
このプロジェクトではCSpellのVS Code拡張機能を使用してスペルチェックを行っています。
@yoshinani/style-guideから提供される辞書を自動的に読み込みます。設定は.vscode/cspell.jsonで管理されています。
プロジェクト固有の単語を追加する場合は、.vscode/cspell.jsonのwords配列に追加してください:
{
"words": ["yoshinani"]
}または、VS Codeのクイックフィックス機能を使用して単語を追加することもできます:
- スペルチェックでエラーが表示されている単語(例: yoshinani)にカーソルを合わせる
Cmd + .(Mac)またはCtrl + .(Windows/Linux)を押してクイックフィックスメニューを開く- 「Add: "yoshinani" to config: .vscode/cspell.json」を選択
これにより、単語が自動的に.vscode/cspell.jsonのwords配列に追加されます。
pnpm checkまたはpnpm check:ciを実行すると、以下のチェックが行われます:
- ESLint: コードの静的解析(リント)
- Biome: コードフォーマットとインポートソートのチェック
# すべてのチェックを実行(修正なし)
pnpm check:ci
# 自動修正を適用
pnpm checkGitHub Actionsで以下のワークフローが PR および手動実行時に動きます:
| ワークフロー | ジョブ名 | 内容 |
|---|---|---|
| Check | check |
型チェック(TypeScript)・Biome・ESLint |
| Test | test |
Vitest による単体テスト |
PR でテストを必須にするには、GitHub のブランチ保護ルールで上記のステータスチェック(check と test)を「必須」にしてください。手順は .github/BRANCH_PROTECTION.md を参照してください。
- Turborepo Documentation
- Next.js Documentation
- shadcn/ui Documentation
- pnpm Documentation
- mise Documentation
このプロジェクトのコードは公開されています。