SaaS:Claude Code 实战指南
了解saas:Claude Code 实战. 包含实用技巧和代码示例。
SaaS模板代码を通过 Claude Code作る
SaaS应用を新しく始めるたびに、认证・課金・ダッシュボード・メール发送といった共通機能をゼロから实现するのは非効率です。借助 Claude Code,再利用可能なSaaS模板代码を构建し、项目ごとに自定义する只需済みます。
模板代码の结构
> Next.js App RouterでSaaS模板代码を作って。
> 认证(NextAuth.js)、Stripe課金、ダッシュボード、
> チーム管理、メール发送(Resend)を含めて。
> Prisma + PostgreSQLで数据库を管理して。
项目構造
src/
├── app/
│ ├── (auth)/ # ログイン・サインアップ
│ ├── (dashboard)/ # 認証済みユーザー画面
│ ├── (marketing)/ # LP・料金ページ
│ └── api/
│ ├── auth/ # NextAuth.js
│ ├── billing/ # Stripe Webhook
│ └── teams/ # チーム管理API
├── components/
│ ├── ui/ # 汎用UIコンポーネント
│ └── features/ # 機能固有コンポーネント
├── lib/
│ ├── auth.ts # 認証設定
│ ├── prisma.ts # DB接続
│ ├── stripe.ts # Stripe設定
│ └── email.ts # メール送信
└── types/
认证の配置
// src/lib/auth.ts
import NextAuth from 'next-auth';
import Google from 'next-auth/providers/google';
import GitHub from 'next-auth/providers/github';
import Credentials from 'next-auth/providers/credentials';
import { PrismaAdapter } from '@auth/prisma-adapter';
import { prisma } from './prisma';
export const { handlers, auth, signIn, signOut } = NextAuth({
adapter: PrismaAdapter(prisma),
providers: [
Google({
clientId: process.env.GOOGLE_CLIENT_ID!,
clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
}),
GitHub({
clientId: process.env.GITHUB_CLIENT_ID!,
clientSecret: process.env.GITHUB_CLIENT_SECRET!,
}),
],
callbacks: {
async session({ session, user }) {
session.user.id = user.id;
// チーム情報を会话に含める
const membership = await prisma.teamMember.findFirst({
where: { userId: user.id },
include: { team: true },
});
if (membership) {
session.user.teamId = membership.team.id;
session.user.role = membership.role;
}
return session;
},
},
pages: {
signIn: '/login',
error: '/login?error=true',
},
});
チーム管理API
// src/app/api/teams/route.ts
import { NextRequest, NextResponse } from 'next/server';
import { auth } from '@/lib/auth';
import { prisma } from '@/lib/prisma';
export async function POST(request: NextRequest) {
const session = await auth();
if (!session?.user) {
return NextResponse.json({ error: '認証が必要です' }, { status: 401 });
}
const { name } = await request.json();
const team = await prisma.team.create({
data: {
name,
members: {
create: {
userId: session.user.id,
role: 'owner',
},
},
},
});
return NextResponse.json(team, { status: 201 });
}
// チームメンバー招待
export async function PATCH(request: NextRequest) {
const session = await auth();
if (!session?.user) {
return NextResponse.json({ error: '認証が必要です' }, { status: 401 });
}
const { email, teamId, role } = await request.json();
// 招待メールを发送
await sendInviteEmail(email, teamId);
const invite = await prisma.teamInvite.create({
data: { email, teamId, role, invitedBy: session.user.id },
});
return NextResponse.json(invite);
}
环境变量模板
# .env.example
DATABASE_URL="postgresql://..."
NEXTAUTH_SECRET="your-secret"
NEXTAUTH_URL="http://localhost:3000"
GOOGLE_CLIENT_ID=""
GOOGLE_CLIENT_SECRET=""
GITHUB_CLIENT_ID=""
GITHUB_CLIENT_SECRET=""
STRIPE_SECRET_KEY=""
STRIPE_WEBHOOK_SECRET=""
RESEND_API_KEY=""
让 Claude Code.env.exampleも同時に生成させることで、チームメンバーが環境构建で迷うことを防げます。
関連文章
认证の实现パターンは认证機能の实现、Stripe联动はStripe決済の集成で詳しく解説しています。Prismaの活用方法相关内容请参阅Prisma ORM活用指南也请查看。
Next.js的官方文档(nextjs.org/docs)也可以参考。
#Claude Code
#SaaS
#boilerplate
#Next.js
#authentication
Related Posts
Use Cases
Use Cases
用 Claude Code 加速个人项目开发【附实战案例】
详解如何用 Claude Code 大幅提升个人项目的开发速度。包含从创意到上线的完整实战案例和工作流。
Use Cases
Use Cases
如何用 Claude Code 自动化代码重构
详解如何利用 Claude Code 高效完成代码重构自动化。包含实用提示词和真实项目中的重构模式。
Use Cases
Use Cases
Complete CORS Configuration Guide:Claude Code 实战指南
了解complete cors configuration guide:Claude Code 实战. 包含实用技巧和代码示例。