SaaS with Claude Code
Aprenda sobre saas usando o Claude Code. Dicas praticas e exemplos de codigo incluidos.
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)も参考にしてください。
PDF gratuito: Cheatsheet do Claude Code em 5 minutos
Basta informar seu e-mail e enviamos na hora o cheatsheet em uma página A4.
Cuidamos dos seus dados pessoais e nunca enviamos spam.
Sobre o autor
Masa
Engenheiro apaixonado por Claude Code. Mantém o claudecode-lab.com, uma mídia tech em 10 idiomas com mais de 2.000 páginas.
Artigos relacionados
7 verificações antes de publicar todos os dias um artigo multilíngue sobre Claude Code
Uma checklist prática para publicar artigos multilíngues sobre Claude Code todos os dias sem esquecer idiomas, quebrar CTAs ou deixar páginas antigas no ar.
O que e Codex Automations? Conteudo, analise e deploy com IA enquanto voce dorme
Guia pratico para usar Codex Automations em analytics, artigos, CTA, deploy e monetizacao.
Desenhe Firestore com Claude Code: comece pelas consultas
Workflow prático para Firestore com Claude Code: schema orientado por consultas, índices, custos, regras de segurança e TypeScript.