シンプルで現代的なFirebase認証システムのNext.jsテンプレートです。
- メール/パスワード認証
- Google OAuth
- GitHub OAuth
- パスワードリセット
- プロフィール編集
- アバター画像設定
- 個人情報管理
- アカウント削除
- レスポンシブデザイン
- ダークモード対応
- アニメーション付きローディング
- モダンなデザイン
- 再認証システム
- データ完全削除
- セッション管理
- GDPR準拠
git clone https://github.com/systemcmd0122/auth-tpl
cd auth-tplnpm install- Firebase Console でプロジェクトを作成
- Authentication を有効化し、以下のプロバイダーを設定:
- Email/Password
- GitHub
- Firestore Database を作成
- プロジェクト設定から設定値を取得
.env.example を .env.local にコピーして設定値を入力:
cp .env.example .env.local.env.local を編集:
# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key_here
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project_id.firebasestorage.app
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_idFirebase Console の Firestore Database > ルール で以下を設定:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// ユーザープロフィール
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
// ユーザー関連データ
match /{collection}/{document} {
allow read, write: if request.auth != null &&
(resource.data.userId == request.auth.uid ||
request.auth.uid == resource.data.userId);
}
// 削除ログ(管理者のみ)
match /deletionLogs/{document} {
allow write: if request.auth != null;
allow read: if false; // 管理者のみアクセス可能
}
}
}npm run devhttp://localhost:3000 でアプリケーションが起動します。
├── app/ # Next.js App Router
│ ├── globals.css # グローバルスタイル
│ ├── layout.tsx # ルートレイアウト
│ ├── page.tsx # ホームページ
│ ├── login/ # ログインページ
│ ├── signup/ # サインアップページ
│ └── profile/ # プロフィールページ
├── components/ # 再利用可能コンポーネント
│ ├── ui/ # shadcn/ui コンポーネント
│ ├── loading-screen.tsx # スタートローディング
│ ├── loading.tsx # 通常ローディング
│ ├── theme-toggle.tsx # テーマ切り替え
│ └── delete-account-dialog.tsx
├── contexts/ # React Context
│ ├── auth-context.tsx # 認証コンテキスト
│ └── startup-context.tsx # スタートアップコンテキスト
├── lib/ # ユーティリティ
│ ├── firebase.ts # Firebase設定
│ ├── profile-service.ts # プロフィール管理
│ └── utils.ts # 共通ユーティリティ
└── hooks/ # カスタムフック
tailwind.config.ts でカラーパレットを変更できます:
module.exports = {
theme: {
extend: {
colors: {
primary: {
50: '#eff6ff',
500: '#3b82f6',
900: '#1e3a8a',
},
},
},
},
}- ロゴ:
components/内のSVGアイコンを変更 - アプリ名:
app/layout.tsxの metadata を変更 - カラーグラデーション: CSS クラスの
from-blue-500 to-purple-600を変更
- Next.js 15 - React フレームワーク
- Firebase v10 - 認証・データベース
- TypeScript - 型安全性
- Tailwind CSS - スタイリング
- shadcn/ui - UIコンポーネント
- Lucide React - アイコン
- next-themes - テーマ管理
- モバイルファースト デザイン
- タブレット 最適化
- デスクトップ 対応
- ダークモード 完全対応
- パスワード強度チェック
- 再認証システム
- セッション管理
- CSRF保護
- 個人情報暗号化
- 完全データ削除
- GDPR準拠
- 監査ログ
- Vercel にプロジェクトをインポート
- 環境変数を設定
- デプロイ
- Netlify:
npm run buildでビルド - Railway: Docker対応
- Firebase Hosting:
firebase deploy
- このリポジトリをフォーク
- フィーチャーブランチを作成 (
git checkout -b feature/amazing-feature) - 変更をコミット (
git commit -m 'Add amazing feature') - ブランチにプッシュ (
git push origin feature/amazing-feature) - プルリクエストを作成
このプロジェクトは MIT ライセンスの下で公開されています。詳細は LICENSE ファイルを参照してください。
問題や質問がある場合は、Issues を作成してください。
⭐ このプロジェクトが役に立った場合は、スターを付けていただけると嬉しいです!