シンプルなカウンターアプリのReact + React Router + Tailwind CSSテンプレートです。
ハッカソンやプロトタイプ開発の出発点として使用できます。
- Node.js 18以上
- npm または yarn
# 依存関係をインストール
npm install
# 開発サーバーを起動
npm run dev
ブラウザで http://localhost:5173
にアクセスしてください。
# プロダクション用ビルド
npm run build
# 型チェック
npm run typecheck
# プロダクション版を起動
npm run start
dohack-template-react/
├── app/ # アプリケーションのメインコード
│ ├── routes/ # ページコンポーネント
│ │ ├── home.tsx # メインページ(カウンター)
│ │ └── about.tsx # このアプリについてページ
│ ├── app.css # グローバルスタイル
│ ├── root.tsx # ルートコンポーネント
│ └── routes.ts # ルーティング設定
├── public/ # 静的ファイル
│ └── favicon.ico
├── package.json # 依存関係とスクリプト
├── vite.config.ts # Vite設定
├── tsconfig.json # TypeScript設定
├── react-router.config.ts # React Router設定
└── README.md
- React 19: UIライブラリ
- React Router v7: SPA(Single Page Application)のルーティング
- TypeScript: 静的型付けによる開発体験の向上
- Tailwind CSS v4: ユーティリティファーストなCSSフレームワーク
- Vite: 高速なビルドツール
- シンプル: 最小限の機能で学習しやすい構成
- モダン: 最新の技術スタックを採用
- 拡張可能: 機能追加がしやすい構造
- 状態管理:
useState
フックでカウンターの値を管理 - 操作: +1、-1、リセットボタン
- リアルタイム更新: ボタンクリックで即座に画面更新
- React Router: 宣言的なルーティング
- 2つのページ: メインページ(
/
)と紹介ページ(/about
) - ナビゲーション:
Link
コンポーネントによるSPA内遷移
- Tailwind CSS: ユーティリティクラスによるスタイリング
- モバイル対応: 画面サイズに応じたレイアウト調整
メインページのコンポーネント。カウンター機能を実装。
const [counter, setCounter] = useState(0); // 状態管理
const incrementCounter = () => setCounter(prev => prev + 1); // カウンター増加
アプリの紹介ページ。技術スタックや機能の説明を表示。
ルーティング設定。URL とコンポーネントの対応関係を定義。
export default [
index("routes/home.tsx"), // / → home.tsx
route("/about", "routes/about.tsx"), // /about → about.tsx
] satisfies RouteConfig;
アプリケーションのルートコンポーネント。HTML構造とエラーハンドリングを定義。
app/routes/
に新しい.tsx
ファイルを作成app/routes.ts
にルートを追加
// app/routes.ts
export default [
index("routes/home.tsx"),
route("/about", "routes/about.tsx"),
route("/new-page", "routes/new-page.tsx"), // 新しいページ
] satisfies RouteConfig;
Tailwind CSSのユーティリティクラスを使用してスタイルを調整できます。
<button className="bg-blue-600 hover:bg-blue-800 text-white px-6 py-3 rounded">
ボタン
</button>
より複雑な状態管理が必要な場合は、Context APIやZustandなどを検討してください。
# 異なるポートで起動
npm run dev -- --port 3001
# 型定義を再生成
npm run typecheck
# node_modulesを削除して再インストール
rm -rf node_modules package-lock.json
npm install
このテンプレートから始めて、以下のような機能を追加してみてください:
- データの永続化(localStorage、API連携)
- 複数のカウンター管理
- アニメーション効果
- フォーム入力
- 外部APIとの連携
- 認証機能
- データベース接続
ハッピーハッキング! 🚀