diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..f2333ad --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +AUTH_SECRET= +AUTH_GITHUB_ID= +AUTH_GITHUB_SECRET= diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md new file mode 100644 index 0000000..f56c34e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -0,0 +1,20 @@ +--- +name: バグレポート +about: レポートを作成して改善に役立てる +title: "[BUG] バグの内容" +labels: bug +assignees: "" +--- + +## バグの内容 + +## 再現方法 + +1. +2. + +## 想定動作 + +## スクリーンショット + +## 補足 diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md new file mode 100644 index 0000000..843f52c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.md @@ -0,0 +1,17 @@ +--- +name: 機能要望 +about: プロジェクトに機能を要望する +title: "[FEATURE] 機能名" +labels: feature +assignees: "" +--- + +## 機能の説明 + +```[tasklist] +## Story +``` + +## 背景 + +## 課題・検討・補足 diff --git a/.github/ISSUE_TEMPLATE/story.md b/.github/ISSUE_TEMPLATE/story.md new file mode 100644 index 0000000..1b0c546 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/story.md @@ -0,0 +1,37 @@ +--- +name: ストーリー +about: ユーザーストーリー +title: "[STORY] 〜をする、〜をしたい" +labels: story +assignees: "" +--- + +## ストーリーの目的 + +## 経緯・背景 + +## 実現方法/UI + +## 受入条件・完了の定義 + +## 詳細タスク + +```[tasklist] +### 調査 +``` + +```[tasklist] +### 設計 +``` + +```[tasklist] +### フロント実装 +``` + +```[tasklist] +### バックエンド実装 +``` + +```[tasklist] +### テスト +``` diff --git a/.github/ISSUE_TEMPLATE/task.md b/.github/ISSUE_TEMPLATE/task.md new file mode 100644 index 0000000..96aeb66 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/task.md @@ -0,0 +1,17 @@ +--- +name: タスク +about: タスクを作成する +title: "[TASK] タスク内容" +labels: "" +assignees: "" +--- + +## タスク + +## 資料 + +## 作業 + +```[tasklist] +### tasks +``` diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..783771a --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,16 @@ +## issue + +## 変更内容 + +## 確認したこと + +## スクリーンショット + +## 補足事項 + +## PR 時のセルフチェック + +- [ ] 関数や変数の命名は一目で分かるものになってますか? +- [ ] コメントは適切な量で、誰が見ても分かるコメントになってますか? +- [ ] PR 内容に関するテストは書きましたか? +- [ ] Issue の完了の定義は満たせていますか? diff --git a/.gitignore b/.gitignore index 5ef6a52..7b8da95 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ yarn-error.log* # env files (can opt-in for committing if needed) .env* +!.env.example # vercel .vercel diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts new file mode 100644 index 0000000..8edc1c6 --- /dev/null +++ b/app/api/auth/[...nextauth]/route.ts @@ -0,0 +1,4 @@ +import { handlers } from "@/lib/auth"; + +export const runtime = "edge"; +export const { GET, POST } = handlers; diff --git a/bun.lockb b/bun.lockb index 72bd292..e5ed405 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/lib/auth.ts b/lib/auth.ts new file mode 100644 index 0000000..e8e42a1 --- /dev/null +++ b/lib/auth.ts @@ -0,0 +1,5 @@ +import NextAuth from "next-auth"; +import GitHub from "next-auth/providers/github"; +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [GitHub], +}); diff --git a/middleware.ts b/middleware.ts new file mode 100644 index 0000000..906515a --- /dev/null +++ b/middleware.ts @@ -0,0 +1,14 @@ +import { auth } from "@/lib/auth"; +import { type NextRequest, NextResponse } from "next/server"; + +export async function middleware(req: NextRequest) { + const session = await auth(); + if (!session) { + return NextResponse.redirect(new URL("/api/auth/signin", req.url)); + } + return NextResponse.next(); +} + +export const config = { + matcher: ["/((?!api|_next/static|_next/image|favicon.ico).*)"], +}; diff --git a/package.json b/package.json index 0dd4957..b715f3b 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "clsx": "^2.1.1", "lucide-react": "^0.469.0", "next": "15.1.2", + "next-auth": "^5.0.0-beta.25", "react": "^19.0.0", "react-dom": "^19.0.0", "tailwind-merge": "^2.5.5",