figma-to-code
๐จ Next.js Figma ๋์์ธ ๊ตฌํ ์คํฌ
์ด ์คํฌ์ BSD ๋ฐ์ด๋ธ์ฝ๋ฉ ์๊ฐ์๋ค์ด Figma ๋์์ธ์ ์ค์ ์๋ํ๋ Next.js ์น์ฌ์ดํธ๋ก ๋ณํํ ์ ์๋๋ก ๋์ต๋๋ค.
๐ ์ด ์คํฌ์ด ํ๋ ์ผ
- ๋์์ธ ๋ถ์: Figma ํ์ผ์ ๋ ์ด์์, ์ปดํฌ๋ํธ, ์์ ์์คํ ๋ถ์
- Next.js ์ปดํฌ๋ํธํ: Figma ๋ ์ด์ด๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ React ์ปดํฌ๋ํธ๋ก ๋ณํ
- Tailwind CSS ์ ์ฉ: ์ ํธ๋ฆฌํฐ ์ฐ์ CSS๋ฅผ ์ฌ์ฉํ ๋น ๋ฅด๊ณ ์ ํํ ์คํ์ผ๋ง
- ๋ฐ์ํ ์ต์ ํ: Tailwind์ ๋ธ๋ ์ดํฌํฌ์ธํธ๋ฅผ ํ์ฉํ ๋ชจ๋ฐ์ผ/๋ฐ์คํฌํฑ ๋์
- ์ธํฐ๋์ ๊ตฌํ: Framer Motion์ ํ์ฉํ ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์ ์ถ๊ฐ
๐ฏ ์ธ์ ์ด ์คํฌ์ ์ฌ์ฉํ๋์?
- "Figma ๋์์ธ์ Next.js ํ๋ก์ ํธ๋ก ๋น ๋ฅด๊ฒ ์ฎ๊ธฐ๊ณ ์ถ์ด์"
- "Tailwind CSS๋ฅผ ์จ์ ๋์์ธ๊ณผ ๋๊ฐ์ ์น์ฌ์ดํธ๋ฅผ ์ฝ๋ฉํ๊ณ ์ถ์ด์"
- "Vercel์ ๋ฐฐํฌํ ํ์ง ๋์ ํ๋ก ํธ์๋ ์ฝ๋๊ฐ ํ์ํด์"
๐ ๏ธ ๊ธฐ์ ์คํ (Professional Stack)
1. Framework
- Next.js 14+ (App Router)
- TypeScript (์์ ์ฑ ํ๋ณด)
2. Styling
- Tailwind CSS: ๋์์ธ ์์คํ ๋ฐ์
- Lucide React / Heroicons: ์์ด์ฝ ์์คํ
3. Animation
- Framer Motion: ์ ๊ตํ ์น ์ ๋๋ฉ์ด์
๐ป ๊ตฌํ ์์ (Figma Design to Next.js)
1. Component Analysis
Figma์ 'Navbar' ํ๋ ์ โ components/Navbar.tsx
2. Implementation Code
import React from "react";
import Link from "next/link";
export default function Navbar() {
return (
<nav className="flex items-center justify-between py-6 px-8 bg-white/80 backdrop-blur-md sticky top-0 z-50 border-b border-gray-100">
<div className="text-2xl font-bold text-blue-600">Logo</div>
<ul className="hidden md:flex gap-8 text-gray-600 font-medium">
<li>
<Link href="#features" className="hover:text-blue-500 transition">
๊ธฐ๋ฅ
</Link>
</li>
<li>
<Link href="#pricing" className="hover:text-blue-500 transition">
๊ฐ๊ฒฉ
</Link>
</li>
<li>
<Link href="#faq" className="hover:text-blue-500 transition">
FAQ
</Link>
</li>
</ul>
<button className="bg-blue-600 text-white px-5 py-2.5 rounded-lg font-semibold hover:bg-blue-700 transition">
์์ํ๊ธฐ
</button>
</nav>
);
}
๐ Figma ๋์์ธ ๋ถ์ ์ฒดํฌ๋ฆฌ์คํธ
1. ๊ทธ๋ฆฌ๋ ๋ฐ ๊ฐ๊ฒฉ
- Tailwind์ Spacing Scale (4, 8, 12, 16px...)์ ๋ง์ถฐ ๋์์ธ ๋ถ์
max-w-7xl๋ฑ ํ์ค ์ปจํ ์ด๋ ๋๋น ์ค์
2. ์ปฌ๋ฌ ์์คํ
- Figma์ HEX ์ฝ๋๋ฅผ
tailwind.config.ts์ ์ปค์คํ ์ปฌ๋ฌ๋ก ๋ฑ๋ก - ๋คํฌ ๋ชจ๋(
dark:) ๊ณ ๋ ค ์ฌ๋ถ ํ์ธ
๐ฌ ์์ ๋ํ
์ฌ์ฉ์: "์ด Figma ์คํฌ๋ฆฐ์ท ๋ณด๊ณ Next.js + Tailwind๋ก ํ์ด๋ก ์น์ ์ง์ค"
Claude:
"Figma ๋์์ธ์ ๋ถ์ํ์ฌ Next.js ์ปดํฌ๋ํธ์ Tailwind CSS๋ก ๋ณํํด๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ด๋ฏธ์ง ์ต์ ํ(next/image)์ ํ
์คํธ ๋ ์ด์์์ ์ ๊ตํ๊ฒ ๊ตฌํํ ์ฝ๋๋ฅผ ์์ฑํด ๋๋ฆด๊ฒ์..."
๐ฏ ํต์ฌ ์ ๋ฆฌ
์ด ์คํฌ์ ์ฌ์ฉํ๋ฉด: โ ํฝ์ ํผํํธ: Figma ๋์์ธ๊ณผ 99% ์ผ์นํ๋ ์ฝ๋ ์์ฑ โ ์์ฐ์ฑ ํฅ์: ์๋ ๋งํฌ์ ์๊ฐ์ ํ๊ธฐ์ ์ผ๋ก ๋จ์ถ โ ํด๋ฆฐ ์ฝ๋: ์ ์ง๋ณด์๊ฐ ์ฌ์ด ๋ชจ๋ํ๋ React ์ปดํฌ๋ํธ ์ ๊ณต โ ๊ณต์ฐ ์ต์ ํ: Next.js์ ๋ด์ฅ ๊ธฐ๋ฅ์ ํ์ฉํ ์ต๊ณ ์์ค์ ์น ์ฑ๋ฅ
BSD ํ์์ด๋ผ๋ฉด: ์ด์ ๋์์ธ์ ์ฝ๋๋ก ์ฎ๊ธฐ๋ ๋ ธ๊ฐ๋ค์์ ๋ฒ์ด๋, ๋ ์ค์ํ ๋น์ฆ๋์ค ๋ก์ง ๊ฐ๋ฐ์ ์ง์คํ ์ ์์ต๋๋ค! ๐จ