このリポジトリは、Todoアプリをテスト駆動開発(TDD)で構築するサンプルプロジェクトです。
t-wadaの推奨するテスト駆動開発(TDD)の原則に基づいて構築するReactアプリケーションのサンプルプロジェクトです。TypeScript、Vite、Fastifyを使用したモノレポ構成です。
- React 19
- TypeScript
- Vite 6
- テスト用のVitest
- APIモック用のMSW(Mock Service Worker)
- Testing Library(React、Jest DOM、User Event)
- Fastify 5
- TypeScript
- Swagger/OpenAPI
- CORS対応
- Turborepo
- npm Workspaces
- 共有型定義パッケージ
- ESLintとPrettier(コード品質向上)
- TypeScript
- Node.js(v18.20.5)
- npm(v10.8.2)
react-tdd-sample/
├── packages/
│ ├── frontend/ # Reactフロントエンドアプリケーション
│ │ ├── src/
│ │ │ ├── assets/ # 静的アセット
│ │ │ ├── mocks/ # MSWモックAPIセットアップとハンドラー
│ │ │ │ └── api/ # リソースごとに整理されたAPIモックハンドラー
│ │ │ └── test/ # テスト設定とユーティリティ
│ │ └── public/ # 静的ファイル
│ └── backend/ # FastifyバックエンドAPI
│ └── src/
│ └── index.ts # サーバーエントリーポイント
├── shared/ # 共有型定義とユーティリティ
│ └── src/
│ └── types/ # 共有TypeScript型定義
├── turbo.json # Turborepo設定
└── package.json # ルートワークスペース設定
リポジトリをクローンして依存関係をインストールします:
git clone <リポジトリのURL>
cd react-tdd-sample
npm installnpm run devこれにより、フロントエンドとバックエンドの両方の開発サーバーが起動します:
- フロントエンド: http://localhost:5173
- バックエンド: http://localhost:3001
# フロントエンドのみ
npm run dev --workspace=@react-tdd-sample/frontend
# バックエンドのみ
npm run dev --workspace=@react-tdd-sample/backendこのプロジェクトではReact Testing Libraryと共にVitestを使用しています。利用可能なテストコマンド:
# 全パッケージのテストを実行
npm test
# ウォッチモードでテストを実行
npm run test:watch
# カバレッジレポート付きでテストを実行
npm run test:coverage
# 個別パッケージのテスト
npm test --workspace=@react-tdd-sample/frontend
npm test --workspace=@react-tdd-sample/backendnpm run dev- 全パッケージの開発サーバーを起動npm run build- 全パッケージの本番用ビルドを作成npm run lint- 全パッケージでESLintを実行npm run preview- フロントエンドの本番ビルドをローカルでプレビューnpm test- 全パッケージのテストを実行npm run test:watch- ウォッチモードでテストを実行npm run test:coverage- カバレッジレポート付きでテストを実行npm run format- 全パッケージでPrettierを実行npm run format:check- 全パッケージでコードフォーマットをチェック
npm run dev- Vite開発サーバーを起動npm run build- TypeScriptビルド + Viteビルドnpm run preview- 本番ビルドをプレビューnpm test- Vitestでテストを実行npm run test:watch- ウォッチモードでテストを実行npm run test:coverage- カバレッジレポート付きでテストを実行
npm run dev- tsx watchで開発サーバーを起動npm run build- TypeScriptビルドnpm start- 本番サーバーを起動npm test- Vitestでテストを実行npm run test:watch- ウォッチモードでテストを実行npm run test:coverage- カバレッジレポート付きでテストを実行
このプロジェクトはテスト駆動開発の原則に従っています:
- 機能に対する失敗するテストを書く
- テストに合格する最小限のコードを実装する
- テストが通ることを確認しながらリファクタリングする
- 共有型定義:
sharedパッケージでフロントエンドとバックエンド間で型を共有 - 効率的なビルド: Turborepoによるキャッシュと並列実行
- 統一された開発体験: 一つのコマンドで全パッケージを管理
- 依存関係の最適化: ワークスペース間での依存関係の効率的な管理
詳細はLICENSEファイルを参照してください。