๊น€์ด์–ธ
๊น€์ด์–ธ
๐Ÿ… AI ๋งˆ์Šคํ„ฐ
๐ŸŒฟ ๋‰ด๋น„ ํŒŒํŠธ๋„ˆ
๐ŸŒˆ ์ง€ํ”ผํ„ฐ์Šค๊ธˆ์†
๐Ÿš€ SNS ์ฑŒ๋ฆฐ์ง€ ๋‹ฌ์„ฑ์ž

Flora Bota ๐ŸŒธ ๋ณดํƒœ๋‹ˆ์ปฌ ์•„ํ‹ฐ์ŠคํŠธ์˜ ๋ธŒ๋žœ๋”ฉ ์‚ฌ์ดํŠธ: Cursor๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  Vercel๋กœ ๋ฐฐํฌํ•˜๊ธฐ

"Flora Bota" ์‚ฌ์ดํŠธ ๋ณด๊ธฐ: https://flora-bota.vercel.app/

ํ”Œ๋ผ์›Œ ์ƒต ์›Œ๋“œ ํ”„๋ ˆ์Šค ํ…Œ๋งˆ


์†Œ๊ฐœ

์ž‘๋…„๋ถ€ํ„ฐ ์ทจ๋ฏธ๋กœ ๋ณดํƒœ๋‹ˆ์ปฌ ์•„ํŠธ๋ฅผ ํ•˜๊ณ  ์žˆ์–ด์š”. ์ ์  ๋” ์žฌ๋ฏธ์žˆ์–ด์ ธ์„œ ์ง„์ง€ํ•˜๊ฒŒ ๋ณดํƒœ๋‹ˆ์ปฌ ์•„ํ‹ฐ์ŠคํŠธ๊ฐ€ ๋˜๊ณ  ์‹ถ๋‹ค๋Š” ๊ฟˆ์„ ๊พธ๊ฒŒ ๋˜์—ˆ์–ด์š”. (์€ํ‡ด ํ›„์—? ๐Ÿ˜)
Flora Kim์ด๋ผ๋Š” ๋ณดํƒœ๋‹ˆ์ปฌ ์•„ํ‹ฐ์ŠคํŠธ ํŽ˜๋ฅด์†Œ๋‚˜๋ฅผ ์„ค์ •ํ•˜๊ณ  ํผ์Šค๋„ ๋ธŒ๋žœ๋”ฉ ์‚ฌ์ดํŠธ "Flora Bota"๋ฅผ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋„๊ตฌ ๋ฐ ์›Œํฌํ”Œ๋กœ์šฐ

  1. Claude : ์‚ฌ์ดํŠธ ๊ธฐํš(๋ชฉํ‘œ, ๊ตฌ์กฐ, ๋””์ž์ธ ๋“ฑ)์„ ์œ„ํ•œ ๋ธŒ๋ ˆ์ธ ์Šคํ† ๋ฐ, ์ •๋ฆฌ

  2. PRD Builder GPTs : ์Šคํ„ฐ๋””์žฅ๋‹˜์˜ PRD Builder์— ๋ธŒ๋ ˆ์ธ ์Šคํ† ๋ฐ ์ž๋ฃŒ๋ฅผ ๋„ฃ๊ณ  PRD ์ž‘์„ฑ

  3. Cursor : PRD์— ๋งž์ถ”์–ด Todo List๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ”๋“œ ๊ฐœ๋ฐœ

  4. OpenAI API : API Key๋ฅผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ณ , AI ์ฑ—๋ด‡ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

  5. EmailJS : ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ์ด๋ฉ”์ผ ๋ฐœ์†ก, ๋ฌธ์˜ํ•˜๊ธฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„

  6. Midjourney : ์‚ฌ์ดํŠธ์— ํฌํ•จ๋œ ์ „์ฒด ๋ณดํƒœ๋‹ˆ์ปฌ ์•„ํŠธ ์ด๋ฏธ์ง€ ์ƒ์„ฑ

  7. Github : Cursor์™€ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์ดํŠธ ํŒŒ์ผ ๊ด€๋ฆฌ

  8. Vercel : Github์™€ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์ดํŠธ ๋ฐฐํฌ

  9. Perplexcity : Github์™€ Vercel์˜ ์‚ฌ์šฉ์„ ์œ„ํ•œ ์งˆ์˜์‘๋‹ต



์‚ฌ์ดํŠธ ๊ฐœ๋ฐœ ๊ณผ์ •

1. ๊ฐœ๋ฐœ ๋ชฉํ‘œ

  • ์•„ํ‹ฐ์ŠคํŠธ์˜ ์˜ˆ์ˆ ์  ์ •์ฒด์„ฑ๊ณผ ์ฒ ํ•™์„ ์ž˜ ๋ฐ˜์˜ํ•˜๋Š” ๋ธŒ๋žœ๋”ฉ

  • ์ž‘ํ’ˆ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ „์‹œํ•  ์ˆ˜ ์žˆ๋Š” ํฌํŠธํด๋ฆฌ์˜ค ๊ตฌ์ถ•

  • ์›Œํฌ์ˆ ๋ฐ ๊ฐ•์˜ ์ •๋ณด๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ œ๊ณตํ•˜์—ฌ ๋“ฑ๋ก ์œ ๋„

  • ์‚ฌ์šฉ์ž์™€์˜ ์†Œํ†ต ์ฑ„๋„ ๋‹ค์–‘ํ™”

2. ์ฃผ์š” ๊ธฐ๋Šฅ (PRD์— ๋ช…์‹œ)

  • ๋ฉ”์ธ ํŽ˜์ด์ง€: ์•„ํ‹ฐ์ŠคํŠธ ์†Œ๊ฐœ ๋ฐ ์ž‘ํ’ˆ ํ•˜์ด๋ผ์ดํŠธ

  • ํฌํŠธํด๋ฆฌ์˜ค ๊ฐค๋Ÿฌ๋ฆฌ: ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ž‘ํ’ˆ ๋ถ„๋ฅ˜ ๋ฐ ์ƒ์„ธ ๋ณด๊ธฐ

  • ์›Œํฌ์ˆ/๊ฐ•์˜: ์ผ์ •, ๋‚ด์šฉ, ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต

  • ์ „์‹œํšŒ ์ •๋ณด: ๊ณผ๊ฑฐ์™€ ์˜ˆ์ •๋œ ์ „์‹œํšŒ ์ •๋ณด ํƒ€์ž„๋ผ์ธ

  • ์—ฐ๋ฝ์ฒ˜ ๋ฐ ๋ฌธ์˜: ์—ฐ๋ฝ์ฒ˜ ์•ˆ๋‚ด์™€ ํ˜‘์—… ๋ฐ ์ž‘ํ’ˆ ์˜๋ขฐ๋ฅผ ์œ„ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ด๋ฉ”์ผ๋กœ ๋ณด๋‚ด๊ธฐ

  • AI ์ฑ—๋ด‡: ์‚ฌ์ดํŠธ ๋ฐฉ๋ฌธ์ž์˜ ์งˆ๋ฌธ์— ์ฆ‰์‹œ ์‘๋‹ต ๊ฐ€๋Šฅํ•œ ๋Œ€ํ™”ํ˜• ์ธํ„ฐํŽ˜์ด์Šค

  • ๋ฐ˜์‘ํ˜• ๋””์ž์ธ: ๋ชจ๋“  ๋””๋ฐ”์ด์Šค์— ์ตœ์ ํ™”

  • ํŽ˜์ด์ง€ ์ „ํ™˜ ๋ฐ ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜

3. PRD์™€ Todo ์ž‘์„ฑ (Cursor๋กœ ๊ฐœ๋ฐœ)

  • PRD Builder GPTs์—์„œ ์ž‘์„ฑํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ํด๋”์— prd.md๋กœ ์ €์žฅ

    ํ•œ๊ตญ์–ด์˜ ์Šคํฌ๋ฆฐ ์ƒท
  • PRD๋ฅผ ์ฐธ์กฐํ•ด์„œ Todo ์ƒ์„ฑ

    @prd.md๋ฅผ ์ฐธ์กฐํ•ด์„œ Todo.md ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”. 
    Todo์˜ task๋“ค์€ ์ตœ๋Œ€ํ•œ ์ž‘์€ ๋‹จ์œ„๋กœ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.
    ํ•œ๊ตญ์–ด ๋ฉ”๋‰ด์˜ ์Šคํฌ๋ฆฐ ์ƒท
  • Todo์— ๋งž์ถ”์–ด ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ

    @Todo.md๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•ด์ฃผ์„ธ์š”.

4. ๊ธฐ์ˆ  ์Šคํƒ (Todo์— ๋”ฐ๋ผ Cursor๊ฐ€ ์„ค์น˜ ๋ฐ ์ง„ํ–‰)

  • ๊ฐœ๋ฐœ ๋„๊ตฌ

    • Vite: ๋น ๋ฅธ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๋ฐ ๋นŒ๋“œ, React ๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์›

    • npm: ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ ๊ด€๋ฆฌ

  • ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ์ˆ 

    • React: ๋ณต์žกํ•œ UI ๊ด€๋ฆฌ

    • Tailwind CSS: ์ผ๊ด€๋œ ๋””์ž์ธ ์‹œ์Šคํ…œ ๊ตฌํ˜„

    • Framer Motion: ํŽ˜์ด์ง€ ์ „ํ™˜๊ณผ ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„

  • ์™ธ๋ถ€ ์„œ๋น„์Šค

    • OpenAI API: ์‚ฌ์ดํŠธ์˜ AI ์ฑ—๋ด‡ ๊ธฐ๋Šฅ ๊ตฌํ˜„

    • EmailJS: ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ์ด๋ฉ”์ผ ๋ฐœ์†ก, ๋ฌธ์˜ํ•˜๊ธฐ์™€ ์—ฐ๋™

5. ๋””์ž์ธ ์‹œ์Šคํ…œ (PRD์— ๋ช…์‹œ)

  • ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ: ์ž์—ฐ๊ณผ ๋ณดํƒœ๋‹ˆ์ปฌ ์•„ํŠธ๋ผ๋Š” ์ฃผ์ œ์— ๋งž์ถค, Colorhunt ์‚ฌ์ดํŠธ ์ฐธ์กฐ

  • ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ: ์„ธ๋ฆฌํ”„์ฒด์™€ ์‚ฐ์„ธ๋ฆฌํ”„์ฒด์˜ ์กฐํ™”

  • ์• ๋‹ˆ๋ฉ”์ด์…˜: ํŽ˜์ด์ง€ ์ „ํ™˜, ์Šคํฌ๋กค ๊ธฐ๋ฐ˜, ๋ฒ„ํŠผ๊ณผ ์นด๋“œ ์ธํ„ฐ๋ž™์…˜, ๊ทธ๋ผ๋ฐ์ด์…˜ ๋ฐ ๋ฐฐ๊ฒฝ ํšจ๊ณผ

  • ๋ณดํƒœ๋‹ˆ์ปฌ ์•„ํŠธ ์ด๋ฏธ์ง€: Midjourney๋กœ ์ฃผ์ œ์— ๋งž๊ฒŒ ์ƒ์„ฑ

6. ์‚ฌ์ดํŠธ ๊ตฌ์กฐ (Cursor๋กœ ๊ฐœ๋ฐœ)

flora-bota/
โ”œโ”€โ”€ public/                   # ์ •์  ์ž์‚ฐ (์ด๋ฏธ์ง€, ์•„์ด์ฝ˜ ๋“ฑ)
โ”‚   โ”œโ”€โ”€ assets/               # ์ด๋ฏธ์ง€ ๋ฐ ๋ฏธ๋””์–ด ํŒŒ์ผ
โ”œโ”€โ”€ src/                      # ์†Œ์Šค ์ฝ”๋“œ
โ”‚   โ”œโ”€โ”€ components/           # ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”‚   โ”œโ”€โ”€ Chatbot.jsx      # AI ์ฑ—๋ด‡ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”‚   โ”œโ”€โ”€ Footer.jsx       # ํ‘ธํ„ฐ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”‚   โ”œโ”€โ”€ HeroSection.jsx  # ํžˆ์–ด๋กœ ์„น์…˜ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”‚   โ”œโ”€โ”€ Layout.jsx       # ๋ ˆ์ด์•„์›ƒ ๋ž˜ํผ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”‚   โ””โ”€โ”€ Navbar.jsx       # ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”œโ”€โ”€ pages/               # ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”‚   โ”œโ”€โ”€ About.jsx        # ์•„ํ‹ฐ์ŠคํŠธ ์†Œ๊ฐœ ํŽ˜์ด์ง€
โ”‚   โ”‚   โ”œโ”€โ”€ Collaboration.jsx # ํ˜‘์—… ํŽ˜์ด์ง€
โ”‚   โ”‚   โ”œโ”€โ”€ Contact.jsx      # ์—ฐ๋ฝ์ฒ˜ ๋ฌธ์˜ EmailJS ์—ฐ๋™ ํŽ˜์ด์ง€ 
โ”‚   โ”‚   โ”œโ”€โ”€ Exhibitions.jsx  # ์ „์‹œํšŒ ํŽ˜์ด์ง€
โ”‚   โ”‚   โ”œโ”€โ”€ Home.jsx         # ํ™ˆํŽ˜์ด์ง€
โ”‚   โ”‚   โ”œโ”€โ”€ NotFound.jsx     # 404 ํŽ˜์ด์ง€
โ”‚   โ”‚   โ”œโ”€โ”€ Portfolio.jsx    # ํฌํŠธํด๋ฆฌ์˜ค ํŽ˜์ด์ง€
โ”‚   โ”‚   โ””โ”€โ”€ Workshops.jsx    # ์›Œํฌ์ˆ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ styles/              # ์Šคํƒ€์ผ ๊ด€๋ จ ํŒŒ์ผ
โ”‚   โ”‚   โ”œโ”€โ”€ index.css        # ์ „์—ญ CSS ๋ฐ Tailwind ์ง€์‹œ์–ด
โ”‚   โ”‚   โ””โ”€โ”€ tailwind.css     # Tailwind CSS ์ถ”๊ฐ€ ์Šคํƒ€์ผ
โ”‚   โ”œโ”€โ”€ App.jsx              # ๋ฉ”์ธ ์•ฑ ์ปดํฌ๋„ŒํŠธ ๋ฐ ๋ผ์šฐํŒ…
โ”‚   โ””โ”€โ”€ main.jsx             # ์•ฑ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ
โ”œโ”€โ”€ dist/                    # ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ (์ž๋™ ์ƒ์„ฑ)
โ”œโ”€โ”€ node_modules/            # ์˜์กด์„ฑ ํŒจํ‚ค์ง€ (์ž๋™ ์ƒ์„ฑ)
โ”œโ”€โ”€ .env.local              # ๋กœ์ปฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (API Key, EmailJS ์„ค์ •)
โ”œโ”€โ”€ .gitignore              # Git ์ œ์™ธ ํŒŒ์ผ ๋ชฉ๋ก
โ”œโ”€โ”€ LICENSE                 # ๋ผ์ด์„ ์Šค ํŒŒ์ผ
โ”œโ”€โ”€ index.html              # HTML ํ…œํ”Œ๋ฆฟ
โ”œโ”€โ”€ package.json            # ์˜์กด์„ฑ ๋ฐ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ package-lock.json       # ์˜์กด์„ฑ ์ž ๊ธˆ ํŒŒ์ผ
โ”œโ”€โ”€ postcss.config.js       # PostCSS ์„ค์ •
โ”œโ”€โ”€ tailwind.config.js      # Tailwind CSS ์„ค์ •
โ”œโ”€โ”€ vercel.json             # Vercel ๋ฐฐํฌ ์„ค์ •
โ””โ”€โ”€ vite.config.js          # Vite ์„ค์ •

7. AI ์ฑ—๋ด‡ (API ์—ฐ๋™, Cursor๋กœ ๊ฐœ๋ฐœ)

  • OpenAI API ์—ฐ๋™: API Key ์ƒ์„ฑ

  • API Key์˜ ์•ˆ์ „ํ•œ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์‚ฌ์šฉ: ๋กœ์ปฌ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— .env.local ํŒŒ์ผ ์ƒ์„ฑ

  • ๋ณด์•ˆ ๊ฐ•ํ™”๋ฅผ ์œ„ํ•ด Git ๊ด€๋ฆฌ์—์„œ ์ œ์™ธ: .gitignore์— .env.local ํŒŒ์ผ ์ถ”๊ฐ€

  • ์ฑ—๋ด‡ ์‘๋‹ต ์ตœ์ ํ™”

    • ์‘๋‹ต ๊ธธ์ด ์กฐ์ •, ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ์ตœ์ ํ™”, ๋„๋ฉ”์ธ ์ง€์‹ ๊ฐ•ํ™”, ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์‘๋‹ต ๋ณด์™„

8. ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ์ด๋ฉ”์ผ ๋ฐœ์†ก (EmailJS ์—ฐ๋™, Cursor๋กœ ๊ฐœ๋ฐœ)

  • EmailJS ๊ฐ€์ž… ํ›„ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ด๋ฉ”์ผ ์„œ๋น„์Šค ์—ฐ๊ฒฐ(Gmail ๋“ฑ), ์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ
    (๋ฌด๋ฃŒ ํ”Œ๋žœ์œผ๋กœ ์›” 200ํšŒ ์ด๋ฉ”์ผ ์ „์†ก ๊ฐ€๋Šฅ)

  • ์„œ๋น„์Šค ID, ํ…œํ”Œ๋ฆฟ ID, Public Key ํ™•์ธ

  • .env.local ํŒŒ์ผ์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€

    # .env.local ํŒŒ์ผ
    VITE_OPENAI_API_KEY=your-api-key
    VITE_EMAILJS_SERVICE_ID=service-id
    VITE_EMAILJS_TEMPLATE_ID=template-id
    VITE_EMAILJS_PUBLIC_KEY=your-public-key

9. ์‚ฌ์ดํŠธ ๋ฒ„์ „ ๊ด€๋ฆฌ (Github)

  • Github์— ์ƒˆ๋กœ์šด Repository "flora-bota" ์ƒ์„ฑ

  • Cursor์˜ ํ„ฐ๋ฏธ๋„์—์„œ Github์™€ ์—ฐ๋™ ๋ฐ ์—…๋กœ๋“œ

    # ์ฒซ ์—ฐ๊ฒฐ ์‹œ 
    git init # Git์ดˆ๊ธฐํ™”
    git remote add origin https://github.com/AeonKim/flora-bota.git # ๋ ˆํฌ์ง€ํ† ๋ฆฌ์™€ ์—ฐ๊ฒฐ
    
    # ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์—…๋กœ๋“œํ•  ๋•Œ
    git add . # ํ˜„์žฌ ํด๋” ๋‚ด ๋ชจ๋“  ๋ณ€๊ฒฝ ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง•
    git commit -m "update changes" # ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๊ธฐ๋ก
    git push origin main # ์ปค๋ฐ‹๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์—…๋กœ๋“œ
    ๊ฑฐ๋ž˜ ๊ณ„์ขŒ ์„ค์ •์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒ€์€ ์ƒ‰ ํ™”๋ฉด

10. ์‚ฌ์ดํŠธ ๋ฐฐํฌ (Vercel)

  • Vercel์— ๊ฐ€์ž…์‹œ "Continue with GitHub"์„ ์„ ํƒํ•˜์—ฌ GitHub ๊ณ„์ •๊ณผ ์—ฐ๋™

  • ๋Œ€์‹œ๋ณด๋“œ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋ฉฐ Github์˜ "flora-bota" Repository๋ฅผ Import

  • ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋นŒ๋“œ ์„ค์ •(๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋™ ์„ค์ •)

  • ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” ์ง์ ‘ ๋“ฑ๋ก

    YouTube์—์„œ ๋น„๋””์˜ค ์„ค์ •์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒ€์€ ์ƒ‰ ํ™”๋ฉด
    • ํ”„๋กœ์ ํŠธ - Settings - Environment Variables ๋ฉ”๋‰ด

    • Key์— ํ‚ค์˜ ๋ช…์นญ, Value์— ํ‚ค ๊ฐ’์„ ์ž…๋ ฅ ํ›„ ์ €์žฅ

    • ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ ์žฌ๋ฐฐํฌํ•ด์•ผ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

  • ํ”„๋กœ์ ํŠธ ์„ค์ •์„ ๋งˆ์นœ ํ›„ "Deploy"ํ•˜๋ฉด ์ž๋™ ๋ฐฐํฌ

  • GitHub Repository์˜ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด Vercel์ด ์ž๋™์œผ๋กœ ์žฌ๋ฐฐํฌ

    ์ƒ์‚ฐ ๊ฐœ๋ฐœ ํŽ˜์ด์ง€์˜ ์Šคํฌ๋ฆฐ ์ƒท
  • 404: NOT_FOUND ์˜ค๋ฅ˜ ์ฃผ์˜

    • ๋ฐฐํฌ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์–ด๋„, ์š”์ฒญํ•œ ๊ฒฝ๋กœ๋‚˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ์˜ค๋ฅ˜

    • ๋ฉ”์ธ ํŽ˜์ด์ง€ flora-bota.vercel.app์€ ์ž˜ ๋ณด์ด์ง€๋งŒ, ๊ฐœ๋ณ„ ํŽ˜์ด์ง€์ธ flora-bota.vercel.app/exhibitions ๋“ฑ์œผ๋กœ ์ง์ ‘ ์ ‘๊ทผํ•˜๋ฉด 404 ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ

    • React, Vite ๋“ฑ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜์˜ SPA(Single Page Application)์—์„œ ์ž์ฃผ ๋‚˜ํƒ€๋‚˜๋Š” ๋ผ์šฐํŒ… ๋ฌธ์ œ

    • ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— vercel.json ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด๊ฒฐ

      {
        "rewrites": [
          { "source": "/(.*)", "destination": "/" }
        ]
      }
    • ๋ชจ๋“  ๊ฒฝ๋กœ ์š”์ฒญ์„ ๋ฃจํŠธ(/)๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•ด, ํด๋ผ์ด์–ธํŠธ ๋ผ์šฐํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋ผ์šฐํŒ…์„ ํ•˜๋„๋ก ์ฒ˜๋ฆฌ

11. ์™„์„ฑ ์‚ฌ์ดํŠธ ๋ณด๊ธฐ: https://flora-bota.vercel.app/



๊ฒฐ๊ณผ์™€ ๋ฐฐ์šด ์ 

  • ์Šคํ„ฐ๋””์žฅ๋‹˜์ด ์•Œ๋ ค์ฃผ์‹  PRD์™€ Todo ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ ๊ทธ๋ฆฌ๊ณ  ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋ผ๋Š” ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์ •๋ง ์œ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘ ์‹œ์ž‘ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๋‹ˆ ์ดํ›„ ๊ณผ์ •์ด ์‰ฌ์›Œ์กŒ์–ด์š”.

  • React์™€ npm์ด ๋ฌด์—‡์ธ์ง€ ๋ชฐ๋ผ๋„ Cursor๊ฐ€ ์•Œ์•„์„œ ์„ค์น˜ํ•˜๊ณ , ์‹คํŒจํ•˜๋ฉด ๊ธฐํŠนํ•˜๊ฒŒ๋„ ๐Ÿ˜ ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์„ ์ฐพ์•„ ๊ณ„์† ๋‹ค์‹œ ์„ค์น˜ํ•ด์ฃผ์–ด ์‚ฌ์ดํŠธ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ฒ˜์Œ์—” ํŒŒ์ผ์„ ์ฐพ์•„ ์†Œ์Šค๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ๋ณต์žกํ•ด์„œ Cursor์˜ ์˜คํผ๋ ˆ์ด์…˜์„ ๋‚ญ๋น„ํ•˜๋ฉฐ ์š”์ฒญ์„ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ ์ฐจ ์ต์ˆ™ํ•ด์ง€๋‹ˆ ์ฝ˜ํ…์ธ ๋‚˜ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋ช… ์ˆ˜์ • ๋“ฑ์€ ์†Œ์Šค๋ฅผ ๋ณด๊ณ  ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์—ˆ์–ด์š”.

    ํ•œ๊ตญ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์˜ ์Šคํฌ๋ฆฐ ์ƒท
  • Github๋Š” ์—ฌ์ „ํžˆ ์–ด๋ ต๊ณ , Vercel๋„ ๋‚ฏ์„ค์—ˆ์ง€๋งŒ Perplexcity์™€ Claude์˜ ๋„์›€์œผ๋กœ ๋ฐฐํฌ์— ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋น„๊ฐœ๋ฐœ์ž๊ฐ€ ์งง์€ ๊ธฐ๊ฐ„ ์•ˆ์— ์ฒ˜์Œ ๊ณ„ํšํ–ˆ๋˜ ์‚ฌ์ดํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ , AI ์ฑ—๋ด‡์„ ๊ตฌํ˜„ํ•œ ๊ฒƒ์— ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ๋„ˆ๋ฌด ๋ถ€์กฑํ•˜์ง€๋งŒ, Cursor๋ฅผ ์™œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋งŽ์ด ๋ฐฐ์› ์–ด์š”!

  • ์‚ฌ์ดํŠธ ๊ธฐ๋Šฅ ํ™•์žฅ์œผ๋กœ ํšŒ์› ์‹œ์Šคํ…œ, ์›Œํฌ์ˆ ์˜ˆ์•ฝ ์‹œ์Šคํ…œ, ์˜จ๋ผ์ธ ๊ฒฐ์ œ ์‹œ์Šคํ…œ ์—ฐ๋™์„ ์ƒ๊ฐํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. Supabase ๋“ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ํ•ด๋ณด๋ ค๊ณ ์š”~ ๐Ÿ€

12
16๊ฐœ์˜ ๋‹ต๊ธ€

๐Ÿ‘‰ ์ด ๊ฒŒ์‹œ๊ธ€๋„ ์ฝ์–ด๋ณด์„ธ์š”