Skip to content

Latest commit

ย 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ธ ReStory - AI ์‚ฌ์ง„ ๋ณต์› ์„œ๋น„์Šค

์†์ƒ๋œ ์‚ฌ์ง„์„ AI๋กœ ๋ณต์›ํ•ด์ฃผ๋Š” ๋ฌด๋ฃŒ ์›น ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. Google Gemini AI๋ฅผ ํ™œ์šฉํ•ด ๋ณด์ˆ˜์ /๋ชจ๋˜/ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Šคํƒ€์ผ์˜ ๋ณต์› ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์ง๊ด€์ ์ธ ๋น„๊ต UI์™€ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž ํŽธ์˜ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ”— ์‚ฌ์ดํŠธ ๋ฐ”๋กœ๊ฐ€๊ธฐ ๏ฝœ GitHub ๋ฐ”๋กœ๊ฐ€๊ธฐ

image

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐Ÿง  Gemini AI ๊ธฐ๋ฐ˜ ์†์ƒ ์‚ฌ์ง„ ๋ณต์› (๋ณด์ˆ˜์ /๋ชจ๋˜/ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Šคํƒ€์ผ)
  • ๐Ÿ“‚ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ํƒ€์ž…/ํฌ๊ธฐ ๊ฒ€์ฆ (์ตœ๋Œ€ 10MB)
  • ๐Ÿชž ๋ณต์› ์ „ํ›„ ์ด๋ฏธ์ง€ ๋น„๊ต ๋ทฐ์–ด (ํ™•๋Œ€/๋‹ค์šด๋กœ๋“œ ์ง€์›)
  • ๐Ÿ–ผ๏ธ JPG/PNG ๋“ฑ ๋‹ค์–‘ํ•œ ์ด๋ฏธ์ง€ ํฌ๋งท ์ง€์›
  • ๐Ÿ’ก ์‹ค์‹œ๊ฐ„ ๋ณต์› ์ง„ํ–‰ ์ƒํƒœ ๋ฐ ์—๋Ÿฌ ์•ˆ๋‚ด
  • ๐ŸŒ— ๋‹คํฌ๋ชจ๋“œ ๋ฐ PWA ์ง€์› (๋ชจ๋ฐ”์ผ ๋Œ€์‘ ํฌํ•จ)

๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ

  • Frontend: Next.js, React, TypeScript, TailwindCSS
  • UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: Radix UI
  • AI ๋ชจ๋ธ ์—ฐ๋™: Replicate API (Cloudflare Workers AI fallback)
  • ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ: Sharp
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: MongoDB (Mongoose)
  • ๋ฐฐํฌ: Vercel

๐Ÿ’ก ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์„ค๋ช…

๐Ÿ”„ ์‚ฌ์ง„ ๋ณต์› ํŒŒ์ดํ”„๋ผ์ธ

  1. ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ฐ ๊ฒ€์ฆ

    • Drag & Drop ๋˜๋Š” ํŒŒ์ผ ์„ ํƒ์œผ๋กœ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
    • ํŒŒ์ผ ํƒ€์ž…(JPG/PNG) ๋ฐ ํฌ๊ธฐ(์ตœ๋Œ€ 10MB) ๊ฒ€์ฆ
    • ๊ฐœ๋ฐœ ๋ชจ๋“œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ (USE_REAL_AI_IN_DEV=true๋กœ ์‹ค์ œ AI ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ)
  2. Rate Limiting

    • IP ๊ธฐ๋ฐ˜ ์š”์ฒญ ์ œํ•œ์œผ๋กœ ์„œ๋ฒ„ ๋ถ€ํ•˜ ๋ฐฉ์ง€
    • MongoDB์— ์š”์ฒญ ๋กœ๊ทธ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌ
  3. AI ๋ณต์› ์—”์ง„ ์„ ํƒ

    • 1์ˆœ์œ„: Replicate FLUX Kontext ๋ชจ๋ธ (๊ณ ํ™”์งˆ ๋ณต์›)
      • ๋™์ ์œผ๋กœ ์ตœ์‹  ๋ชจ๋ธ ๋ฒ„์ „ ํ•ด์‹œ ํš๋“
      • ์˜ˆ์ธก ์ƒ์„ฑ ๋ฐ ์ƒํƒœ ํด๋ง (์ตœ๋Œ€ 40์ดˆ)
      • ์„ฑ๊ณต ์‹œ ๊ณ ํ™”์งˆ ๋ณต์› ์ด๋ฏธ์ง€ ๋ฐ˜ํ™˜
    • 2์ˆœ์œ„ (Fallback): Cloudflare Workers AI (๋ฌด๋ฃŒ ๋Œ€์ฒด)
      • Stable Diffusion v1.5 Img2Img ๋ชจ๋ธ ์‚ฌ์šฉ
      • ๋ถ€๋“œ๋Ÿฌ์šด ์•„๋‚ ๋กœ๊ทธ ๊ฐ์„ฑ ๋ณต์›
    • ์‹คํŒจ ์‹œ: ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ฐ ์žฌ์‹œ๋„ ์•ˆ๋‚ด
  4. ์ด๋ฏธ์ง€ ํ›„์ฒ˜๋ฆฌ

    • Sharp๋ฅผ ์ด์šฉํ•œ ์ด๋ฏธ์ง€ ํฌ๋งท ๋ณ€ํ™˜
    • ์ €ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€ ์ž๋™ ์—…์Šค์ผ€์ผ๋ง (๊ฐœ๋ฐœ ๋ชจ๋“œ)
    • Base64 ์ธ์ฝ”๋”ฉํ•˜์—ฌ ํ”„๋ก ํŠธ์—”๋“œ ์ „์†ก
  5. ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜

    • ๋ณต์›๋œ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ (Base64)
    • ์‚ฌ์šฉ๋œ ์—”์ง„ ์ •๋ณด
    • ๋ณต์› ์Šคํƒ€์ผ ๋ฐ ์„ค๋ช…

AI ์‚ฌ์ง„ ๋ณต์› ์‹œ์Šคํ…œ

  • Replicate API๋ฅผ ํ™œ์šฉํ•œ AI ๊ธฐ๋ฐ˜ ์‚ฌ์ง„ ๋ณต์› (Cloudflare Workers AI fallback ์ง€์›)
  • Sharp๋ฅผ ์ด์šฉํ•œ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋ฐ ๊ณ ํ™”์งˆ ์—…์Šค์ผ€์ผ๋ง
  • Rate Limiting ๊ธฐ๋Šฅ์œผ๋กœ ์„œ๋ฒ„ ๋ถ€ํ•˜ ๋ฐฉ์ง€
  • ๊ณ ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€ ์ง€์› (์„œ๋ฒ„ ๋ถ€ํ•˜ ์ œํ•œ์„ ์œ„ํ•œ 10MB ์ œํ•œ ์ ์šฉ)

์ง๊ด€์ ์ธ ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ

  • Drag & Drop ๊ธฐ๋ฐ˜ ์—…๋กœ๋“œ ๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
  • ์ด๋ฏธ์ง€ ์ „ํ›„ ๋น„๊ต ์Šฌ๋ผ์ด๋” UI
  • ์ด๋ฏธ์ง€ ํ™•๋Œ€/์ €์žฅ/์žฌ๋ณต์› ๊ธฐ๋Šฅ ์ œ๊ณต

์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๋ฐ ๋ณด์•ˆ

  • ๋ณต์› ์ค‘/์™„๋ฃŒ/์‹คํŒจ ๋“ฑ ๋‹ค์–‘ํ•œ ์ƒํƒœ ์•ˆ๋‚ด ๋ฐ ํ† ์ŠคํŠธ ํ”ผ๋“œ๋ฐฑ
  • ์„œ๋ฒ„ ์ž„์‹œ ์ฒ˜๋ฆฌ ํ›„ ์ด๋ฏธ์ง€ ์ž๋™ ํ๊ธฐ (๊ฐœ์ธ์ •๋ณด ๋ฏธ์ €์žฅ)
  • ํŒŒ์ผ ํƒ€์ž…/์‚ฌ์ด์ฆˆ ๊ฒ€์ฆ ๋ฐ ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ๋ฐฉ์นจ ์ œ๊ณต

์„ฑ๋Šฅ ๋ฐ ์ ‘๊ทผ์„ฑ ์ตœ์ ํ™”

  • PWA ์ง€์›: ์˜คํ”„๋ผ์ธ ์ ‘๊ทผ ๋ฐ ํ™ˆํ™”๋ฉด ์„ค์น˜ ๊ธฐ๋Šฅ
  • ๋ฐ˜์‘ํ˜• ์›น ๋””์ž์ธ: ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค์— ์ตœ์ ํ™”๋œ UI
  • ์ ‘๊ทผ์„ฑ ๊ณ ๋ ค: ๋ช…ํ™•ํ•œ ํ”ผ๋“œ๋ฐฑ, ํ‚ค๋ณด๋“œ ํƒ์ƒ‰ ๋“ฑ UI ๊ฐœ์„ 

About

๐Ÿ’ก ๋ฌด๋ฃŒ ์‚ฌ์ง„ ๋ณต์› ์„œ๋น„์Šค - AI๋กœ ์˜›๋‚  ์‚ฌ์ง„ ๋ณต์› : AI ๊ธฐ์ˆ ๋กœ ์†์ƒ๋œ ์˜›๋‚  ์‚ฌ์ง„์„ ๋ฌด๋ฃŒ๋กœ ์ „๋ฌธ์ ์œผ๋กœ ๋ณต์›ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages