Next.js 15 + TypeScript + Tailwind CSS + shadcn/ui を使用したモダンなWebアプリケーションテンプレートです。
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS v4
- UI Components: shadcn/ui (Radix UI primitives)
- Authentication: Supabase Auth
- Database: PostgreSQL (Supabase) + Drizzle ORM
- Code Quality: Biome (linting & formatting)
- Testing: Vitest + Testing Library
- Storybook: Component development & documentation
- Package Manager: Bun
- Git Hooks: Lefthook
- Node.js 18.0.0 以上
- Bun (推奨) または npm/yarn/pnpm
- Supabaseアカウント
- GitHubアカウント(OAuth認証用)
- Googleアカウント(OAuth認証用)
# リポジトリをクローンまたはテンプレートから作成
git clone <your-repo-url>
cd <your-repo-name>
# 依存関係をインストール
bun install
# 環境変数の設定
cp .env.example .env.local
このテンプレートはSupabaseを使用した認証とデータ管理を実装しています。
- データベースセットアップガイド - Supabase + Drizzle ORMの設定手順
- Supabaseを使わない場合 - 認証機能が不要な場合
Supabaseを使用する場合は、以下の設定が必要です:
- Supabaseプロジェクトの作成
- OAuth認証の設定(GitHub/Google)
- 環境変数の設定
- データベースとストレージのセットアップ
bun run dev
http://localhost:3000 でアプリケーションにアクセスできます。
bun run dev # 開発サーバーを起動
bun run build # プロダクション用ビルド
bun run start # プロダクションサーバーを起動
bun run typecheck # TypeScript型チェック
bun run check # Biome linter/formatter チェック
bun run check:fix # Biome 自動修正(unsafe修正含む)
bun run format # Biome フォーマットチェック
bun run format:fix # Biome 自動フォーマット
bun run test # Vitestでテスト実行
bun run storybook # Storybook開発サーバーを起動 (http://localhost:6006)
bun run build-storybook # Storybookをビルド
src/
├── app/ # Next.js App Router
│ ├── globals.css # グローバルスタイル
│ ├── layout.tsx # ルートレイアウト
│ └── page.tsx # ホームページ
├── components/
│ ├── ui/ # shadcn/ui コンポーネント
│ ├── shared/ # 共有コンポーネント
│ └── features/ # 機能別コンポーネント
└── lib/
└── utils.ts # ユーティリティ関数
このプロジェクトは厳密なコーディング規約に従っています:
- コンポーネント命名: ディレクトリ名(kebab-case)とTSXファイル名(PascalCase)の対応
- インポート:
@/
エイリアスを使用した絶対パス - コード品質: Biomeによる自動linting/formatting
- Git Hooks: コミット前の自動品質チェック
詳細は CLAUDE.md
を参照してください。
Lefthookにより以下のフックが自動実行されます:
- Pre-commit:
bun run check:fix
による自動修正 - Pre-push:
bun run check
とbun run typecheck
による品質チェック
shadcn/uiコンポーネントは src/components/ui/
に配置されています。新しいコンポーネントを追加する場合:
bunx shadcn@latest add [component-name]
このテンプレートには、Supabase Authを使用した認証機能が実装されています:
- GitHub OAuth認証
- Google OAuth認証
- ログイン/ログアウト機能
- 認証状態に応じたUIの出し分け
- プロフィールアバターの表示
- ユーザーが「Sign In」ボタンをクリック
/login
ページでGitHub/Googleログインボタンをクリック- 選択したプロバイダーの認証画面にリダイレクト
- 認証成功後、
/auth/callback
でセッションを作成 - ホームページにリダイレクト
ユーザーは自分のプロフィール情報を管理できます:
- プロフィール表示:
/profile
ページでユーザー情報を表示 - 名前の編集: 表示名を自由に変更可能
- アバター画像のアップロード:
- 最大5MBまでの画像ファイルをアップロード
- アップロード中のプログレス表示
- 即時プレビュー機能
- Supabase Storageに安全に保存
- ヘッダーのユーザーメニューから「Profile」を選択
/profile
ページでプロフィール情報を確認- アバター画像をクリックして新しい画像を選択
- 名前フィールドを編集
- 「Update Profile」ボタンで保存
- データ管理:
public.users
テーブルでユーザー情報を管理 - 画像保存: Supabase Storageの
avatars
バケットに保存 - リアルタイムバリデーション: Zodスキーマによる入力検証
- アクセシビリティ: shadcn/uiのFormコンポーネントでWCAG準拠