๐Ÿš€ Modern SaaS MVP Stack

6 min read
nextjs supabase stripe vercel typescript tailwindcss postgresql prisma react-email resend sentry posthog mvp saas serverless

4์ฃผ ์•ˆ์— SaaS๋ฅผ ์ถœ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๊ฒ€์ฆ๋œ ๊ธฐ์ˆ  ์Šคํƒ - Next.js, Supabase, Stripe๋กœ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜๊ธฐ

๐Ÿš€ Modern SaaS MVP Stack

4์ฃผ ์•ˆ์— SaaS๋ฅผ ์ถœ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๊ฒ€์ฆ๋œ ๊ธฐ์ˆ  ์Šคํƒ
"Ship fast, iterate faster" - ๋น ๋ฅธ ์ถœ์‹œ์™€ ์ง€์†์ ์ธ ๊ฐœ์„ ์„ ์œ„ํ•œ ์ตœ์ ์˜ ์กฐํ•ฉ


๐ŸŽฏ ์ด ์Šคํƒ์ด ์ ํ•ฉํ•œ ๊ฒฝ์šฐ

โœ… ์ถ”์ฒœํ•˜๋Š” ๊ฒฝ์šฐ

  • ๋น ๋ฅธ MVP ์ถœ์‹œ๊ฐ€ ์ตœ์šฐ์„  ๋ชฉํ‘œ
  • ์ดˆ๊ธฐ ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์‹ถ์€ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์Šคํƒ€ํŠธ์—…
  • 1-3๋ช…์˜ ์†Œ๊ทœ๋ชจ ํŒ€์œผ๋กœ ์šด์˜
  • B2B SaaS ๋˜๋Š” ํ”„๋กœ์Šˆ๋จธ ํƒ€๊ฒŸ ์„œ๋น„์Šค
  • ์‚ฌ์šฉ๋Ÿ‰ ๊ธฐ๋ฐ˜ ๊ณผ๊ธˆ์œผ๋กœ ์„ฑ์žฅํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

โŒ ๋‹ค๋ฅธ ์Šคํƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒฝ์šฐ

  • ๋ณต์žกํ•œ ๋ฐฑ์—”๋“œ ๋กœ์ง์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ โ†’ Enterprise Stack
  • ์‹ค์‹œ๊ฐ„ ํ˜‘์—…์ด ํ•ต์‹ฌ์ธ ๊ฒฝ์šฐ โ†’ Realtime Stack
  • AI/ML์ด ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ ๊ฒฝ์šฐ โ†’ AI-Powered Stack

๐Ÿงฉ ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ

Frontend & UI

// ํ•ต์‹ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šคํƒ const frontend = { framework: "Next.js 14 (App Router)", language: "TypeScript", styling: "Tailwind CSS + shadcn/ui", stateManagement: "Zustand", forms: "React Hook Form + Zod", animations: "Framer Motion" }; 

์ฃผ์š” ํŠน์ง•:

  • Next.js 14: Server Components๋กœ ๋น ๋ฅธ ์ดˆ๊ธฐ ๋กœ๋”ฉ
  • TypeScript: ํƒ€์ž… ์•ˆ์ •์„ฑ์œผ๋กœ ๋ฒ„๊ทธ ๊ฐ์†Œ
  • Tailwind + shadcn/ui: ์ผ๊ด€๋œ ๋””์ž์ธ ์‹œ์Šคํ…œ

Backend & Database

// Supabase๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฑ์—”๋“œ const backend = { platform: "Supabase", database: "PostgreSQL", orm: "Prisma", realtime: "Supabase Realtime", storage: "Supabase Storage", auth: "Supabase Auth" }; 

Supabase ์žฅ์ :

  • PostgreSQL ๊ธฐ๋ฐ˜์˜ ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • ๋‚ด์žฅ๋œ ์ธ์ฆ ์‹œ์Šคํ…œ (OAuth, Magic Link ์ง€์›)
  • ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”
  • ํŒŒ์ผ ์Šคํ† ๋ฆฌ์ง€ (S3 ํ˜ธํ™˜)

๊ฒฐ์ œ & ๊ตฌ๋… ๊ด€๋ฆฌ

// Stripe ํ†ตํ•ฉ const payments = { processor: "Stripe", subscriptions: "Stripe Billing", webhooks: "Stripe Webhooks", customerPortal: "Stripe Customer Portal", invoicing: "Stripe Invoicing" }; 

์ด๋ฉ”์ผ & ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

  • React Email: ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ
  • Resend: ํŠธ๋žœ์žญ์…”๋„ ์ด๋ฉ”์ผ ์ „์†ก
  • Crisp: ๊ณ ๊ฐ ์ง€์› ์ฑ„ํŒ…

๋ฐฐํฌ & ์ธํ”„๋ผ

# ์ธํ”„๋ผ ๊ตฌ์„ฑ deployment: frontend: Vercel backend: Supabase Cloud cdn: Vercel Edge Network dns: Cloudflare monitoring: Vercel Analytics 

๋ชจ๋‹ˆํ„ฐ๋ง & ๋ถ„์„

  • Sentry: ์—๋Ÿฌ ํŠธ๋ž˜ํ‚น ๋ฐ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง
  • PostHog: ์ œํ’ˆ ๋ถ„์„ ๋ฐ ์‚ฌ์šฉ์ž ํ–‰๋™ ์ถ”์ 
  • Vercel Analytics: ์›น ์„ฑ๋Šฅ ์ง€ํ‘œ

๐Ÿ’ฐ ์ƒ์„ธ ๋น„์šฉ ๋ถ„์„

| ์„œ๋น„์Šค | ๋ฌด๋ฃŒ ํ‹ฐ์–ด | ์œ ๋ฃŒ ์‹œ์ž‘ | ์›” 1๋งŒ MAU | ์›” 10๋งŒ MAU | |--------|-----------|-----------|------------|-------------| | Vercel | ์ถฉ๋ถ„ํ•จ | $20/์›” | $20 | $150 | | Supabase | 500MB DB5GB ์Šคํ† ๋ฆฌ์ง€ | $25/์›” | $25 | $399 | | Stripe | ๊ฑฐ๋ž˜ ์ˆ˜์ˆ˜๋ฃŒ๋งŒ | 2.9% + 30ยข | ~$300* | ~$3,000* | | Resend | 100 ์ด๋ฉ”์ผ/์ผ | $20/์›” | $20 | $80 | | Sentry | 5K ์ด๋ฒคํŠธ/์›” | $26/์›” | $26 | $80 | | PostHog | 1M ์ด๋ฒคํŠธ/์›” | $0/์›” | $0 | $200 | | ์ด๊ณ„ | $0/์›” | ~$91/์›” | ~$391/์›” | ~$3,909/์›” |

*๋งค์ถœ์˜ ์•ฝ 3% ๊ธฐ์ค€ ๊ณ„์‚ฐ


๐Ÿš€ 4์ฃผ ๊ตฌํ˜„ ๋กœ๋“œ๋งต

๐Ÿ“… Week 1: ๊ธฐ์ดˆ ์„ค์ •

# Day 1-2: ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™” npx create-next-app@latest saas-app --typescript --tailwind --app cd saas-app npm install @supabase/supabase-js prisma @prisma/client # Day 3-4: Supabase ์„ค์ • npx supabase init npx prisma init # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์„ค๊ณ„ # Day 5-7: ์ธ์ฆ ์‹œ์Šคํ…œ # Supabase Auth ํ†ตํ•ฉ # ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ # ๋ณดํ˜ธ๋œ ๋ผ์šฐํŠธ ์„ค์ • 

๐Ÿ“… Week 2: ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง: Prisma ์Šคํ‚ค๋งˆ ์ •์˜
  • CRUD API: Server Actions๋กœ ๊ตฌํ˜„
  • UI ์ปดํฌ๋„ŒํŠธ: shadcn/ui ์ปดํฌ๋„ŒํŠธ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•
  • ํผ ๊ฒ€์ฆ: React Hook Form + Zod

๐Ÿ“… Week 3: ์ˆ˜์ตํ™” ์‹œ์Šคํ…œ

// Stripe ๊ฐ€๊ฒฉ ํ”Œ๋žœ ์˜ˆ์‹œ const pricingPlans = [ { name: "Starter", price: "$9/month", features: ["1 User", "10 Projects", "Basic Support"], stripePriceId: "price_starter" }, { name: "Pro", price: "$29/month", features: ["5 Users", "Unlimited Projects", "Priority Support"], stripePriceId: "price_pro" }, { name: "Enterprise", price: "Custom", features: ["Unlimited Users", "Custom Features", "SLA"], stripePriceId: null } ]; 

๐Ÿ“… Week 4: ์ถœ์‹œ ์ค€๋น„

  • ์„ฑ๋Šฅ ์ตœ์ ํ™”: Lighthouse ์ ์ˆ˜ 90+ ๋‹ฌ์„ฑ
  • SEO ์„ค์ •: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, OG ์ด๋ฏธ์ง€, sitemap
  • ๋ชจ๋‹ˆํ„ฐ๋ง ์„ค์ •: Sentry, PostHog ํ†ตํ•ฉ
  • ๋ฌธ์„œํ™”: README, API ๋ฌธ์„œ, ์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ

๐Ÿ”„ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

saas-app/ โ”œโ”€โ”€ app/ โ”‚ โ”œโ”€โ”€ (auth)/ # ์ธ์ฆ ๊ด€๋ จ ํŽ˜์ด์ง€ โ”‚ โ”œโ”€โ”€ (dashboard)/ # ๋Œ€์‹œ๋ณด๋“œ (๋ณดํ˜ธ๋œ ๋ผ์šฐํŠธ) โ”‚ โ”œโ”€โ”€ api/ # API ๋ผ์šฐํŠธ โ”‚ โ””โ”€โ”€ (marketing)/ # ๋งˆ์ผ€ํŒ… ํŽ˜์ด์ง€ โ”œโ”€โ”€ components/ โ”‚ โ”œโ”€โ”€ ui/ # shadcn/ui ์ปดํฌ๋„ŒํŠธ โ”‚ โ””โ”€โ”€ features/ # ๊ธฐ๋Šฅ๋ณ„ ์ปดํฌ๋„ŒํŠธ โ”œโ”€โ”€ lib/ โ”‚ โ”œโ”€โ”€ supabase/ # Supabase ํด๋ผ์ด์–ธํŠธ โ”‚ โ”œโ”€โ”€ stripe/ # Stripe ์œ ํ‹ธ๋ฆฌํ‹ฐ โ”‚ โ””โ”€โ”€ utils/ # ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ โ””โ”€โ”€ prisma/ โ””โ”€โ”€ schema.prisma # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ 

๋ฐ์ดํ„ฐ ํŽ˜์นญ ํŒจํ„ด

// Server Component์—์„œ ๋ฐ์ดํ„ฐ ํŽ˜์นญ async function DashboardPage() { const supabase = createServerComponentClient(); const { data: projects } = await supabase .from('projects') .select('*') .order('created_at', { ascending: false }); return <ProjectList projects={projects} />; } // Client Component์—์„œ mutation function CreateProjectForm() { const createProject = async (data: ProjectData) => { const response = await fetch('/api/projects', { method: 'POST', body: JSON.stringify(data) }); // ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋˜๋Š” ์žฌ๊ฒ€์ฆ }; } 

๐ŸŽจ ๋Œ€์•ˆ ๋ฐ ๋ณ€ํ˜•

๐Ÿ’ธ ๋” ์ €๋ ดํ•œ ๋Œ€์•ˆ

| ์›๋ณธ | ๋Œ€์•ˆ | ์ ˆ๊ฐ ํšจ๊ณผ | |------|------|-----------| | Supabase | PocketBase (Self-hosted) | -$25/์›” | | Vercel | Coolify (Self-hosted) | -$20/์›” | | Stripe | Paddle (๊ฐ„๋‹จํ•œ ์„ธ๊ธˆ ์ฒ˜๋ฆฌ) | ๋น„์Šทํ•จ | | PostHog | Umami (Self-hosted) | -$0/์›” |

๐Ÿš€ ๋” ๊ฐ•๋ ฅํ•œ ๋Œ€์•ˆ

| ์›๋ณธ | ๋Œ€์•ˆ | ์žฅ์  | |------|------|------| | Next.js | Remix | ๋” ๋‚˜์€ ๋„ค์ŠคํŒ… ๋ผ์šฐํŒ… | | Supabase | AWS Amplify | ๋” ๋งŽ์€ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• | | Prisma | Drizzle | ๋” ๋‚˜์€ ์„ฑ๋Šฅ | | Vercel | AWS + Terraform | ์™„์ „ํ•œ ์ œ์–ด |

๐ŸŒ ์ง€์—ญ๋ณ„ ๋ณ€ํ˜•

  • ํ•œ๊ตญ: NHN Toast + ํ† ์ŠคํŽ˜์ด๋จผ์ธ 
  • ์œ ๋Ÿฝ: Hetzner + Stripe (Strong Customer Authentication)
  • ์ค‘๊ตญ: ์•Œ๋ฆฌ๋ฐ”๋ฐ” ํด๋ผ์šฐ๋“œ + Alipay

๐Ÿ† ์„ฑ๊ณต ์‚ฌ๋ก€

Cal.com

  • ์Šคํƒ: Next.js + Prisma + Tailwind
  • ์„ฑ๊ณผ: 2๋…„ ๋งŒ์— $25M ํˆฌ์ž ์œ ์น˜
  • ํŠน์ง•: ์˜คํ”ˆ์†Œ์Šค๋กœ ์‹ ๋ขฐ ๊ตฌ์ถ•

Dub.co

  • ์Šคํƒ: Next.js + Planetscale + Vercel
  • ์„ฑ๊ณผ: ์›” 1์–ต+ ๋งํฌ ์ฒ˜๋ฆฌ
  • ํŠน์ง•: ๋›ฐ์–ด๋‚œ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜

Papermark

  • ์Šคํƒ: Next.js + Supabase + Resend
  • ์„ฑ๊ณผ: Product Hunt 1์œ„
  • ํŠน์ง•: ๋น ๋ฅธ ์ถœ์‹œ์™€ ๋ฐ˜๋ณต

๐Ÿ“š ํ•„์ˆ˜ ๋ฆฌ์†Œ์Šค

์Šคํƒ€ํ„ฐ ํ…œํ”Œ๋ฆฟ

ํ•™์Šต ์ž๋ฃŒ

์ปค๋ฎค๋‹ˆํ‹ฐ


๐Ÿ’ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ ์˜๊ฒฌ

"Supabase๋Š” ์ •๋ง Firebase์˜ ์˜คํ”ˆ์†Œ์Šค ๋Œ€์•ˆ์ด ๋งž๋„ค์š”. ํŠนํžˆ PostgreSQL ๊ธฐ๋ฐ˜์ด๋ผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋„ ์‰ฝ๊ณ , Row Level Security๋กœ ๋ณด์•ˆ๋„ ํƒ„ํƒ„ํ•ฉ๋‹ˆ๋‹ค." - @devkr

"์ฒ˜์Œ์—” Vercel ๋น„์šฉ์ด ๋ถ€๋‹ด์Šค๋Ÿฌ์› ๋Š”๋ฐ, ์‹ค์ œ๋กœ๋Š” DevOps ์—”์ง€๋‹ˆ์–ด ํ•œ ๋ช… ๊ณ ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ์ €๋ ดํ–ˆ์–ด์š”." - @saasbuilder

"shadcn/ui๋Š” ์ง„์งœ ๊ฒŒ์ž„์ฒด์ธ์ €. Tailwind๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ์„ฑ์ด ์™„์ „ ๋‹ค๋ฅธ ๋ ˆ๋ฒจ์ด๋„ค์š”." - @uimaster


๐Ÿšจ ์ฃผ์˜์‚ฌํ•ญ ๋ฐ ํŒ

โš ๏ธ ํ”ํ•œ ์‹ค์ˆ˜๋“ค

  1. ๊ณผ๋„ํ•œ ์ตœ์ ํ™”: MVP๋Š” ์™„๋ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋จ
  2. ๋ณต์žกํ•œ ๊ถŒํ•œ ์‹œ์Šคํ…œ: ์ดˆ๊ธฐ์—” ๋‹จ์ˆœํ•˜๊ฒŒ ์‹œ์ž‘
  3. ์ปค์Šคํ…€ ๊ฒฐ์ œ ์‹œ์Šคํ…œ: Stripe Customer Portal ํ™œ์šฉ

๐Ÿ’ก ํ”„๋กœ ํŒ

  1. Supabase Edge Functions: ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์šฉ
  2. Incremental Static Regeneration: ๋งˆ์ผ€ํŒ… ํŽ˜์ด์ง€ ์„ฑ๋Šฅ
  3. Database Indexes: ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ์ตœ์ ํ™”
  4. Webhook ์žฌ์‹œ๋„: Stripe ์›นํ›… ์•ˆ์ •์„ฑ

๐ŸŽฏ ๋‹ค์Œ ๋‹จ๊ณ„

์ด ์Šคํƒ์œผ๋กœ MVP๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ถœ์‹œํ–ˆ๋‹ค๋ฉด:

  1. ์Šค์ผ€์ผ๋ง: Enterprise Microservices Stack์œผ๋กœ ์ „ํ™˜ ๊ณ ๋ ค
  2. AI ๊ธฐ๋Šฅ ์ถ”๊ฐ€: AI-Powered App Stack ์ฐธ์กฐ
  3. ์‹ค์‹œ๊ฐ„ ๊ธฐ๋Šฅ: Realtime Collaboration Stack ํ†ตํ•ฉ

๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ: 2025-01-28
๊ธฐ์—ฌํ•˜๊ธฐ: GitHub์—์„œ ํŽธ์ง‘

Found this helpful? Share it with others!
Tweet

๐Ÿ”— Related Content

You might also be interested in these articles

๐Ÿข company

๐Ÿข Vercel ๊ธฐ์ˆ  ์Šคํƒ ๋ถ„์„

๋ฒ„์…€์ด ํ”„๋ก ํŠธ์—”๋“œ ๋ฐฐํฌ์˜ ๋ฏธ๋ž˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ์ˆ  ์Šคํƒ ์‹ฌ์ธต ๋ถ„์„ - Next.js, Edge Functions, ๊ทธ๋ฆฌ๊ณ  ๊ธ€๋กœ๋ฒŒ ์—ฃ์ง€ ๋„คํŠธ์›Œํฌ

31 min read
vercel, nextjs+9
Read more
๐Ÿข company

๐Ÿข Canva ๊ธฐ์ˆ  ์Šคํƒ ๋ถ„์„

์บ”๋ฐ”๊ฐ€ 1์–ต ๋ช… ์ด์ƒ์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‰ฝ๊ณ  ๊ฐ•๋ ฅํ•œ ๋””์ž์ธ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ  ์Šคํƒ ์‹ฌ์ธต ๋ถ„์„ - Java, TypeScript, AWS๋กœ ๊ตฌ์ถ•ํ•œ ๋Œ€๊ทœ๋ชจ ๋””์ž์ธ ํ”Œ๋žซํผ

35 min read
canva, java+10
Read more
๐Ÿ—๏ธ stack

๐Ÿ”„ Realtime Collaboration Stack

Figma, Notion ๊ฐ™์€ ์‹ค์‹œ๊ฐ„ ํ˜‘์—… ์•ฑ ๊ตฌ์ถ•์„ ์œ„ํ•œ ๊ธฐ์ˆ  ์Šคํƒ - WebSocket, CRDT, WebRTC๋กœ ๋งŒ๋“œ๋Š” ๋™์‹œ ํŽธ์ง‘ ์‹œ์Šคํ…œ

20 min read
nodejs, socketio+13
Read more
๐Ÿ—๏ธ stack

โšก Serverless Full Stack

์šด์˜ ๋ถ€๋‹ด ์—†์ด ๋ฌดํ•œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜ - AWS Lambda, DynamoDB, API Gateway๋กœ ๊ตฌ์ถ•ํ•˜๋Š” ํ˜„๋Œ€์  ํ’€์Šคํƒ

13 min read
aws-lambda, dynamodb+13
Read more
๐Ÿ—๏ธ stack

๐Ÿ›’ E-commerce Stack

์ด์ปค๋จธ์Šค ํ”Œ๋žซํผ์„ ์œ„ํ•œ ๊ฒ€์ฆ๋œ ๊ธฐ์ˆ  ์Šคํƒ - ๊ฒฐ์ œ, ์žฌ๊ณ , ์ฃผ๋ฌธ ๊ด€๋ฆฌ ์ตœ์ ํ™”

9 min read
ecommerce, shop+5
Read more
๐Ÿข company

๐Ÿข Notion ๊ธฐ์ˆ  ์Šคํƒ ๋ถ„์„

๋…ธ์…˜์ด ์ˆ˜์ฒœ๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ All-in-One ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ  ์Šคํƒ ์‹ฌ์ธต ๋ถ„์„ - ๋ธ”๋ก ๊ธฐ๋ฐ˜ ์—๋””ํ„ฐ, ์‹ค์‹œ๊ฐ„ ํ˜‘์—…, ๊ทธ๋ฆฌ๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

26 min read
notion, typescript+11
Read more

Found this helpful?

Help us improve this content by contributing on GitHub or sharing your feedback with the community.