๐Ÿš€Supabase + Cursor ์™€ ํ•จ๊ป˜ ์ฒซ CRUD ๊ฐœ๋ฐœ ์‹œํ–‰์ฐฉ์˜ค 6ํƒ„

๐Ÿš€ Supabase + Cursor์™€ ํ•จ๊ป˜ ์ฒซ CRUD ๊ฐœ๋ฐœ ์‹œํ–‰์ฐฉ์˜ค

Cursor ์Šคํ„ฐ๋””์— Supabase + MCP ๊นŒ์ง€ ๋ฐฐ์› ์ง€๋งŒ
์Šคํ„ฐ๋”” ๊ธฐ๊ฐ„ ์ค‘, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋А๋ผ
์ด์ œ์„œ์•ผ Supabase + MCP ์‚ฌ์šฉํ•˜๋ฉฐ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒฝํ—˜ํ•˜๋„ค์š” ๐Ÿคฃ๐Ÿ’ค

๋น„๊ฐœ๋ฐœ์ž + LLM 1๊ฐœ์›”์ฐจ์˜ ๊ท€์—ฌ์šด ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ธ€๋กœ ๋‹ด์•˜์œผ๋‹ˆ ๊ฐ€๋ณ๊ฒŒ ์ฝ์–ด์ฃผ์„ธ์š” ๐Ÿ˜„


๐Ÿ“Œ ๋ฐฐ๊ฒฝ

  • ๐Ÿง‘โ€๐Ÿ’ป ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ ์ค‘ CRUD ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์‹œ๋„

  • ๐Ÿค– Cursor AI์™€ Supabase MCP๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ ๊ณผ์ • ๊ธฐ๋ก

  • ๐Ÿ” ์ฒ˜์Œ ํ•ด๋ณด๋Š” ๋ธ”๋กœ๊ทธ CRUD ๊ธฐ๋Šฅ ๊ตฌํ˜„์˜ ์‹œํ–‰์ฐฉ์˜ค


๐ŸŽฏ ๋ชฉํ‘œ

  • โœ… ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… ๊ธฐ๋Šฅ ๊ตฌํ˜„ (CRUD ์™„์„ฑ)

  • ๐Ÿ—„๏ธ Supabase๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

'home'and'tag iting์— ๋Œ€ํ•ด ํฐ์ƒ‰๊ณผ ์ฃผํ™ฉ์ƒ‰ ๋ฐฐ๋„ˆ

๐Ÿ“ ๊ฐœ๋ฐœ ๊ณผ์ •

1๏ธโƒฃ ํŽ˜์ด์ง€ ๊ตฌ์กฐ ์„ค๊ณ„

  • ๐Ÿ“Š ํ˜„์žฌ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ์—๋Š” ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๋งŒ ์กด์žฌ

๊ฒ€์€ ๋ฐฐ๊ฒฝ์ด์žˆ๋Š” ์›น ์‚ฌ์ดํŠธ์˜ ์Šคํฌ๋ฆฐ ์ƒท

  • โž• ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ฑ ๊ธฐ๋Šฅ ํ•„์š”

  • ๐Ÿ—๏ธ Cursor๋ฅผ ํ†ตํ•œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์กฐ ์„ค๊ณ„

  • ๐Ÿ“ ์ฒด๊ณ„์ ์ธ ํด๋” ๊ตฌ์กฐ ํ•„์š”์„ฑ ์ธ์‹

  • ๐Ÿ”„ ์ด์ƒ์  ์ž‘์—… ํ๋ฆ„ ์ •๋ฆฝ:

    • ์ฒ˜์Œ ๊ฐœ๋ฐœ์ด๋ผ ์ค‘๊ตฌ๋‚œ๋ฐฉ + Auto Run ์œผ๋กœ ํด๋”๊ตฌ์กฐ๊ฐ€ ๋‚œ๋ฆฌ์ž…๋‹ˆ๋‹ค ๐Ÿคฃ

    • ๋‹ค์Œ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๋กœ ๊ฐœ๋ฐœ ์‹œ๋„ํ•ด์•ผ๊ฒ ์–ด์š”!

      1. ๐Ÿ› ๏ธ Cursor๋กœ ๊ตฌ์กฐ ์„ค๊ณ„

      2. ๐ŸŽจ Stitch๋กœ ๋””์ž์ธ ๊ตฌํ˜„

      3. โš›๏ธ React ๋ณ€ํ™˜

2๏ธโƒฃ Supabase MCP ์—ฐ๊ฒฐ

  • ๐Ÿ†• Supabase ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

๊ฒ€์€ ๋ฐฐ๊ฒฝ์ด์žˆ๋Š” ์›น ์‚ฌ์ดํŠธ์˜ ์Šคํฌ๋ฆฐ ์ƒท

  • ๐Ÿงฉ MCP๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์ž๋™ ์„ค๊ณ„

ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ๊ฐ€์žˆ๋Š” ํ™”๋ฉด ์Šคํฌ๋ฆฐ ์ƒท
  • ๐Ÿ“‹ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์™€ ๊ด€๊ณ„ ์ •์˜

ํ•ญ๋ชฉ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒ€์€ ์ƒ‰ ํ™”๋ฉด
  • ๐ŸŒฑSupabase MCP ์—†์—ˆ์œผ๋ฉด ์ด๋Ÿฐ ๋ถ€๋ถ„์—์„œ ๋„ˆ๋ฌด ๊ณ ์ƒํ–ˆ์„ ๊ฒƒ ๊ฐ™์•„์š” ๐Ÿ˜Ž

3๏ธโƒฃ ๊ถŒํ•œ ๋ฌธ์ œ ๋ฐœ์ƒ

  • ๐Ÿ”’ Supabase ์ •์ฑ…(Policy) ์„ค์ • ๋ฌธ์ œ ๋ฐœ๊ฒฌ

  • ๐Ÿšซ ๊ธ€์“ฐ๊ธฐ ๊ถŒํ•œ ์„ค์ •์—์„œ ์–ด๋ ค์›€ ๊ฒฝํ—˜

  • ๐Ÿ”‘ ์ •์ฑ… ๊ถŒํ•œ ์„ค์ •์˜ ์ค‘์š”์„ฑ ๊นจ๋‹ฌ์Œ

Supabase ๊ถŒํ•œ์„ค์ • ์บก์ฒ˜

4๏ธโƒฃ MCP ๋น„ํ™œ์„ฑํ™” ๋ฌธ์ œ ํ•ด๊ฒฐ

  • โš ๏ธ Supabase MCP๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ

์ „ํ™” ํ™”๋ฉด์˜ ์„ค์ • ์Šคํฌ๋ฆฐ ์ƒท
  • ์ž์„ธํžˆ ์•„๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ,

    • MCP ๋Š” ์„œ๋ฒ„๋กœ ์šด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์ด์Šˆ์‹œ, ๋Œ€์‘ ํ•„์š”!

      • ๊ณต์‹์ด ์•„๋‹Œ, ์Šค๋ฏธ๋”๋ฆฌ : https://smithery.ai/ ๋Š”

      • ์ž์ฒด ์„œ๋ฒ„ MCP ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์Šค๋ฏธ๋”๋ฆฌ ์„œ๋ฒ„ ์˜์กด๋„๋„ ์˜ฌ๋ผ๊ฐ!

  • ๐Ÿ”Œ ์ž์ฒด ์—ฐ๊ฒฐ ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜

    • ๐Ÿ“„ .env.local ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

  • ๐Ÿ’ป CLI๋ฅผ ํ†ตํ•œ ์ˆ˜๋™ ํ…Œ์ด๋ธ” ์ƒ์„ฑ (MCP๋กœ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์„œ ํ•ด๊ฒฐ)

  • โœ… ์—ฐ๊ฒฐ ์ƒํƒœ ํ™•์ธ

5๏ธโƒฃ CRUD ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • ๐ŸŽ‰ Create ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์„ฑ๊ณต

  • โž• Supabase ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ํ™•์ธ

  • ๐Ÿ”„ ํ”„๋ก ํŠธ์—”๋“œ ์—ฐ๋™ ์ž‘์—…

  • ๐Ÿ“ Next.js, React ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ์ˆ˜์ •

  • Next.js , React ๊ธฐ๋ฐ˜ ํŒŒ์ผ์ด๋ผ ์ง์ ‘ ๋ฐ›์•„์˜ค๋ ค๋ฉด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋‚˜๋ด์š”

  • ๊ฐœ๋ฐœ ์‹ค๋ ฅ์„ ๋Š˜๋ฆฌ๋ ค๋ฉด, ๋ฐฐ๊ฒฝ์ง€์‹์„ ๋ฐฐ์šฐ๋ ค๋Š” ๋งˆ์Œ์ด ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™์•„์š” (Feat. ์„ฑ์žฅํ”ผํ„ฐ๋‹˜)

  • ๐Ÿ–ฅ๏ธ ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ ๋ฐ ํ‘œ์‹œ ๋กœ์ง ๊ตฌํ˜„

  • ๐Ÿ ๋ชฉํ‘œ ๋‹ฌ์„ฑ ๊ณ„ํš

  • ๐ŸŽŠ CRUD ๊ธฐ๋Šฅ ์ค‘ Create ๊ตฌํ˜„ ์™„๋ฃŒ

ํ•œ๊ตญ์–ด ์›น ์‚ฌ์ดํŠธ์˜ ์Šคํฌ๋ฆฐ ์ƒท
  • ์ด์ œ๋Š” CRUD ์ค‘ Update, Delete ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ๊ฒ ์ฃ !

    • Supabase + Table ์—ฐ๋™๋งŒ ์™„๋ฃŒ๋˜๋ฉด ๋‚˜๋จธ์ง€ ์ž‘์—…์€ ๊ธˆ๋ฐฉ ๋  ๊ฒƒ ๊ฐ™์•„์„œ

    • Create ๊ธฐ๋Šฅ๊ตฌํ˜„ ์™„๋ฃŒ๋˜๊ณ  ์‹œํ–‰์ฐฉ์˜ค ๊ธ€ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ’ก ์ธ์‚ฌ์ดํŠธ

๐Ÿ”ง ๊ธฐ์ˆ ์  ์ธ์‚ฌ์ดํŠธ

  • ๐ŸŒ MCP์˜ ์„œ๋ฒ„ ์˜์กด์„ฑ ์ธ์‹

    • ๐Ÿ’ช ๋กœ์ปฌ ๊ตฌํ˜„ ๋Šฅ๋ ฅ์˜ ์ค‘์š”์„ฑ

    • ๐Ÿ› ๏ธ ์„œ๋ฒ„ ๋น„ํ™œ์„ฑํ™” ์‹œ ๋Œ€์‘ ๋ฐฉ๋ฒ• ํ•™์Šต

  • ๐Ÿ“š ํ™˜๊ฒฝ์„ค์ • ๊ด€๋ จ ์ง€์‹ ์Šต๋“

    • ๐Ÿ”„ .env์™€ .env.local ์ฐจ์ด์ 

    • ๐Ÿ”— slug, React vs Next.js ๊ฐœ๋… ์ดํ•ด

    • ๐Ÿงช ๋ชฉ์—… ๋ฐ์ดํ„ฐ์™€ ํ•˜๋“œ์ฝ”๋”ฉ์˜ ๊ฐœ๋…

๐Ÿ“ˆ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ๊ฐœ์„ ์ 

  • ๐Ÿงฉ ๊ตฌ์กฐ ์„ค๊ณ„ โ†’ ๋””์ž์ธ โ†’ ๊ตฌํ˜„ ์ˆœ์„œ๋กœ ์ง„ํ–‰

  • ๐ŸŒฟ Git ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•œ ์„ธ์ด๋ธŒ ํฌ์ธํŠธ ํ™œ์šฉ

  • ๐Ÿ–ฅ๏ธCursor/Rule ์ปค์Šคํ…€ ์…‹ํŒ… ์‹œํ–‰์ฐฉ์˜ค (๋‹จ์ถ•ํ‚ค ๋งŒ๋“ค๊ธฐ)

ํ•œ๊ตญ์–ด ๋ฉ”๋‰ด์˜ ์Šคํฌ๋ฆฐ ์ƒท

  • ๐Ÿšจ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์™€ ์นœํ•ด์ง€๊ธฐ

    • ๐Ÿ“Š ์—๋Ÿฌ ๋ณ€ํ™”๋Š” ์˜๋ฏธ๊ฐ€ ์žˆ์Œ์„ ์ธ์‹

๐Ÿš€ ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•

  • ๐Ÿ”„ Cursor ํ™œ์šฉ ๊ตฌ์กฐ ์„ค๊ณ„ โ†’ Stitch ๋””์ž์ธ โ†’ Figma MCP ์ •๋ฆฌ ํ๋ฆ„

    • Figma MCP ์‚ฌ์šฉํ•˜์ง„ ์•Š์•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๊ณ  ํ›„๊ธฐ ์ ๊ฒ ์Šต๋‹ˆ๋‹ค..!

  • ๐Ÿ—๏ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„์€ ๊ตฌ์กฐ ์žก๊ธฐ โ†’ ์œ„์น˜์— ๋งž๋Š” ํŽ˜์ด์ง€ ๊ตฌํ˜„ ์ˆœ์œผ๋กœ ์ง„ํ–‰

  • ๐Ÿ“š ๊ฐœ๋ฐœ ์‹ค๋ ฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹ ํ•™์Šต์˜ ์ค‘์š”์„ฑ

๐Ÿ“š ์šฉ์–ด ์ •๋ฆฌ

  • โš›๏ธ React: ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์ถ•์„ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • ๐Ÿ“ JSX: React์˜ ํ™•์žฅ ๋ฌธ๋ฒ•

  • ๐Ÿ–ฅ๏ธ Next.js: React ๊ธฐ๋ฐ˜ ์›น ํ”„๋ ˆ์ž„์›Œํฌ

  • ๐Ÿ“„ ts vs tsx: TypeScript vs TypeScript + JSX

  • ๐Ÿงช ๋ชฉ์—… ๋ฐ์ดํ„ฐ: UI/๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์šฉ ๊ฐ€์งœ ๋ฐ์ดํ„ฐ

  • ๐Ÿ’ป ํ•˜๋“œ์ฝ”๋”ฉ: ์†Œ์Šค ์ฝ”๋“œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ์‹

  • ๐Ÿ”— ์Šฌ๋Ÿฌ๊ทธ(Slug): URL์— ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์˜ ์‹๋ณ„์ž

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

  • โœ๏ธ Update, Read, Delete ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • ๐ŸŽจ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„ 

  • ๐Ÿงน ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ๋ฐ ์ตœ์ ํ™”


๐Ÿค” ํšŒ๊ณ 

  • ๐ŸŽฏ ์ฒซ CRUD ๊ตฌํ˜„์˜ ์–ด๋ ค์›€๊ณผ ์„ฑ์ทจ

    • Request(์š”์ฒญ) <-> Response(์‘๋‹ต) ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”!

    • (ํ”„๋กœ์ ํŠธ ํ•ด๋ณด๋ฉด์„œ ์•Œ์•„์•ผ ํ•จ!)

  • ๐Ÿ› ๏ธ MCP ์˜์กด์„ฑ ์ค„์ด๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ๊ธฐ ์ค‘์š”์„ฑ

  • ๐Ÿ“š ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์„ ํ†ตํ•œ ์‹ค์งˆ์  ํ•™์Šต ๊ฐ€์น˜

  • โœ๏ธ ์†์ฝ”๋”ฉ์„ ํ†ตํ•œ ํ•™์Šต์˜ ์žฌ๋ฏธ ๋ฐœ๊ฒฌ

    • ์˜๋„์น˜ ์•Š์•˜๋Š”๋ฐ Cursor Pro ํ† ํฐ์„ ์ „๋ถ€ ์‚ฌ์šฉํ•ด์„œ ์†์ฝ”๋”ฉ ํ•ด๋ณด๋‹ˆ

    • ํ™•์‹คํžˆ ๋ฐฐ์šฐ๋ฉด์„œ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜๋”๋ผ๊ตฌ์š”! (๋‚˜์˜์ง€์•Š์•˜๋‹ค..?! ๐Ÿคฃ)

    • ์ถ”๊ฐ€๋กœ Auto-Run ํ•˜๋ฉด ๊ฐœ๋ฐœ ์‹ค๋ ฅ๋„ ์•ˆ๋Š˜๊ณ , ํ† ํฐ๋„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋‹ˆ ์ด ์  ์œ ์˜ํ•˜์„ธ์š”!

2
2๊ฐœ์˜ ๋‹ต๊ธ€

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