Aller au contenu principalAller au pied de page
NeuraAPI
NeuraAPI
Navigation
가이드 2026년 2월 10일 10분 읽기

48시간으로 SaaS 만들기: 단계별 가이드

Partager :

SaaS를 출시하기 위해 이제 몇 달간의 개발이 필요하지 않습니다. 올바른 도구 — Next.js 14, Stripe, Prisma, Vercel — 를 사용하면 48시간 내에 기능적인 제품을 가질 수 있습니다. 이 가이드는 첫 번째 커밋부터 프로덕션 배포까지 각 단계를 상세히 설명합니다.

1일차 — 기초 (0-12시간)

1단계: 프로젝트 초기화

TypeScript, Tailwind CSS, App Router로 Next.js 14 프로젝트를 생성합니다:

npx create-next-app@14 my-saas \
  --typescript --tailwind --eslint --app \
  --src-dir --import-alias "@/*"

cd my-saas

# 필수 의존성 설치
npm install prisma @prisma/client next-auth
npm install stripe @stripe/stripe-js
npm install zod react-hook-form
npm install @neuraapi/sdk

2단계: 데이터베이스 설정

Prisma는 직관적인 ORM 레이어를 제공합니다. PostgreSQL로 초기화합니다:

// prisma/schema.prisma
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model User {
  id        String   @id @default(cuid())
  email     String   @unique
  name      String?
  password  String
  plan      String   @default("starter")
  apiKey    String   @unique @default(cuid())
  createdAt DateTime @default(now())
  projects  Project[]
}

3단계: 인증 구현

NextAuth.js는 Next.js의 표준 선택입니다. 자격 증명으로 설정합니다:

// src/lib/auth.ts
import NextAuth from 'next-auth'
import CredentialsProvider from 'next-auth/providers/credentials'
import { prisma } from './db'
import bcrypt from 'bcryptjs'

export const { handlers, auth, signIn, signOut } = NextAuth({
  providers: [
    CredentialsProvider({
      credentials: {
        email: { label: '이메일', type: 'email' },
        password: { label: '비밀번호', type: 'password' },
      },
      async authorize(credentials) {
        const user = await prisma.user.findUnique({
          where: { email: credentials?.email as string },
        })
        if (!user) return null
        const valid = await bcrypt.compare(
          credentials?.password as string, user.password
        )
        if (!valid) return null
        return { id: user.id, email: user.email, name: user.name }
      },
    }),
  ],
  session: { strategy: 'jwt' },
  pages: { signIn: '/login' },
})

2일차 — 결제 및 배포

4단계: Stripe 통합

// src/app/api/stripe/checkout/route.ts
import { NextRequest, NextResponse } from 'next/server'
import { auth } from '@/lib/auth'
import Stripe from 'stripe'

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!)

export async function POST(req: NextRequest) {
  const session = await auth()
  if (!session?.user) {
    return NextResponse.json({ error: 'Unauthorized' }, { status: 401 })
  }

  const { plan } = await req.json()
  const checkoutSession = await stripe.checkout.sessions.create({
    mode: 'subscription',
    payment_method_types: ['card'],
    customer_email: session.user.email!,
    line_items: [{ price: PLANS[plan].priceId, quantity: 1 }],
    success_url: `${process.env.NEXT_URL}/dashboard?success=true`,
    cancel_url: `${process.env.NEXT_URL}/pricing?canceled=true`,
    metadata: { userId: session.user.id, plan },
  })

  return NextResponse.json({ url: checkoutSession.url })
}

5단계: Vercel 배포

# Vercel CLI 설치
npm i -g vercel

# 배포
vercel

# 환경 변수 설정
vercel env add DATABASE_URL
vercel env add NEXTAUTH_SECRET
vercel env add STRIPE_SECRET_KEY

# 프로덕션 배포
vercel --prod

48시간 요약

10-4시간프로젝트 설정, 의존성, Prisma 데이터베이스
24-12시간NextAuth 인증, 회원가입, 로그인
312-24시간대시보드, 레이아웃, 네비게이션, 설정
424-36시간Stripe 체크아웃, 웹훅, 구독 관리
536-44시간랜딩 페이지, SEO, 트랜잭션 이메일
644-48시간테스트, Vercel 배포, 모니터링

지름길이 필요하신가요?

NeuraSaaS 템플릿은 이 가이드의 모든 것을 사전 구성하여 포함합니다: 인증, 대시보드, Stripe, 랜딩 페이지, 관리자 패널. 40시간의 개발을 절약하세요.

가격보기 →