โœจ ๊ฒฐ๊ณผ๋ฌผ

๋ถ„๊ฐˆ์ด ํ™ ๊ณ„์‚ฐ๊ธฐ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ฌ ์†Œ์Šค์ฝ”๋“œ

GitHub: https://github.com/namikimlab/potting-soil-calculator

Potting Soil Calculator

๐Ÿชด ์™œ ๋งŒ๋“ค์—ˆ์„๊นŒ?

ํ™”๋ถ„์— ์‹๋ฌผ์„ ์‹ฌ์„ ๋•Œ, ํ™์ด ์–ผ๋งˆ๋‚˜ ํ•„์š”ํ•œ์ง€ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒŒ ์€๊ทผํžˆ ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค. ํ™”๋ถ„์˜ ๋ชจ์–‘, ํฌ๊ธฐ, ๋†’์ด, ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ์š”. ์ดˆ๋ณด ๊ฐ€๋“œ๋„ˆ๋‚˜ ์›์˜ˆ ์ž…๋ฌธ์ž๋“ค์ด ์ง๊ด€์ ์œผ๋กœ ํ™ ์šฉ๋Ÿ‰์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์—์„œ ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ง ์ด๋Ÿฐ ๊ธฐ์ˆ ์„ ์ผ์–ด์š”

์ด ๊ณ„์‚ฐ๊ธฐ๋Š” ํ”„๋ก ํŠธ์—”๋“œ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋œ React ์›น์•ฑ์ž…๋‹ˆ๋‹ค.

  • React + TypeScript: ์•ˆ์ •์ ์ธ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ
  • Vite: ๋น ๋ฅธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋ฐ ๋นŒ๋“œ
  • Tailwind CSS: ๊ฐ€๋ณ๊ณ  ์ง๊ด€์ ์ธ ์Šคํƒ€์ผ๋ง
  • Netlify: ์ •์  ์‚ฌ์ดํŠธ ๋ฐฐํฌ ๋ฐ HTTPS ์ž๋™ ์ ์šฉ
  • Google Analytics (GA4): ๋ฐฉ๋ฌธ์ž ์ถ”์ 
  • Jest + ts-jest: 100% ์œ ๋‹› ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€

๐Ÿ“ฆ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ํ™”๋ถ„ ๋ชจ์–‘ ์„ ํƒ (์‚ฌ๊ฐํ˜•, ์›ํ†ตํ˜•, ์›๋ฟ”ํ˜•, ๊ธฐํƒ€)
  • ๊ฐ ๋ชจ์–‘์— ๋งž๋Š” ์‚ฌ์ด์ฆˆ ์ž…๋ ฅ
  • ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ํ™ ์šฉ๋Ÿ‰(L) ์ถœ๋ ฅ
  • 20L + 8L ๋ถ„๊ฐˆ์ดํ™ ์ œํ’ˆ ์กฐํ•ฉ ์ถ”์ฒœ
  • ๋งˆ์‚ฌํ† (๋ฐฐ์ˆ˜์šฉ ์ž๊ฐˆ)๋„ ํ•จ๊ป˜ ์ œ์•ˆ
  • ๋ฐ˜์‘ํ˜• ์›น ์ง€์› (๋ชจ๋ฐ”์ผ ์ตœ์ ํ™”)
  • SEO๋ฅผ ์œ„ํ•œ Open Graph ๋ฉ”ํƒ€ํƒœ๊ทธ, favicon, sitemap.xml, robots.txt ์„ค์ •

๐Ÿ’ก ์ด๋Ÿฐ ์ ์„ ์‹ ๊ฒฝ ์ผ์Šต๋‹ˆ๋‹ค

  • ์‹ค์ œ ๊ตฌ๋งค๋กœ ์ด์–ด์ง€๋„๋ก ์„ค๊ณ„
    ๋‹จ์ˆœํ•œ ๊ณ„์‚ฐ๊ธฐ ์ˆ˜์ค€์ด ์•„๋‹ˆ๋ผ, ๊ตฌ๋งค ๋ฒ„ํŠผ๊นŒ์ง€ ์—ฐ๊ฒฐ๋˜๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ๋Œ€ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
    ํ•„์ˆ˜๊ฐ’ ๊ฒ€์ฆ ๋“ฑ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์–ด ๋กœ์ง ํฌํ•จ

  • ๋ชจ๋ฐ”์ผ ์œ ์ €๋„ ๊ณ ๋ คํ•œ UI
    ํ„ฐ์น˜ ๊ฐ€๋Šฅํ•œ ํฐ ๋ฒ„ํŠผ, ๊ฐ„๊ฒฐํ•œ ์ž…๋ ฅ์ฐฝ, ํ…์ŠคํŠธ ๊ฐ•์กฐ ๋“ฑ์œผ๋กœ ์ ‘๊ทผ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿงช ํ…Œ์ŠคํŠธ

calculateSoilVolume ๋กœ์ง์€ ๋‹จ์ˆœํ•ด ๋ณด์—ฌ๋„, ํ˜•ํƒœ๋ณ„ ๊ณต์‹์ด ๋‹ค๋ฅด๊ณ  ์ •์ˆ˜ ๋ฐ˜์˜ฌ๋ฆผ, ๋‹จ์œ„ ๋ณ€ํ™˜, ๊ณฑ์…ˆ ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด Jest ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ–ˆ๊ณ , ํ˜„์žฌ 100% ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŒ ๋ฐฐํฌ ๋ฐ SEO

  • Netlify๋กœ ์ •์  ๋ฐฐํฌ
  • sitemap.xml, robots.txt ์ง์ ‘ ์ž‘์„ฑ
  • og:image ์„ค์ • (์นด์นด์˜คํ†ก, ํŽ˜์ด์Šค๋ถ ๊ณต์œ  ๋Œ€์‘)
  • Canonical ํƒœ๊ทธ๋กœ ์ค‘๋ณต URL ๋ฐฉ์ง€

๐ŸŽจ AI๋ฅผ ํ™œ์šฉํ•œ ๋””์ž์ธ

  • ๊ฐ„๋‹จํ•œ ์†๊ทธ๋ฆผ ์Šค์ผ€์น˜์—์„œ ์‹œ์ž‘ํ•ด ์ž์—ฐ์Šค๋Ÿฌ์šด ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ๋ฅผ ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Google Stitch๋ฅผ ํ™œ์šฉํ•ด UI ๋ ˆ์ด์•„์›ƒ, ํƒ€๊ฒŸ ์‚ฌ์šฉ์ž, ์ฃผ์š” ๊ธฐ๋Šฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋””์ž์ธ ์ปจ์…‰์„ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ดˆ๊ธฐ ์Šค์ผ€์น˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ChatGPT์˜ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ํ™”๋ถ„ ๋ชจ์–‘ ์•„์ด์ฝ˜์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ AI ๋„๊ตฌ๋ฅผ ๊ฒฐํ•ฉํ•ด ๋””์ž์ด๋„ˆ ์—†์ด๋„ ๋น ๋ฅด๊ฒŒ ์ผ๊ด€๋œ ํ”„๋กœ๋•์…˜ ์ˆ˜์ค€์˜ UI๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค

๐Ÿ‘€ ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ

์ฒ˜์Œ์—” ๋‹จ์ˆœํ•œ ํ™ ๊ณ„์‚ฐ๊ธฐ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด๋ณด์ž๋Š” ๋งˆ์Œ์œผ๋กœ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ, ๋ง‰์ƒ ๋งŒ๋“ค๋‹ค ๋ณด๋‹ˆ UX, ๋””์ž์ธ, ์ž…๋ ฅ ๊ฒ€์ฆ, SEO, ๋ฐฐํฌ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์‹ค์ œ ๊ตฌ๋งค ํ๋ฆ„๊นŒ์ง€ ๊ณ ๋ คํ•  ๊ฒƒ๋“ค์ด ๊ฝค ๋งŽ์•˜์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์น˜๋ฅผ ์ฃผ๋Š” ์ž‘์€ ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ธฐํš๋ถ€ํ„ฐ ๊ตฌํ˜„, ๋ฐฐํฌ๊นŒ์ง€ ํ•˜๋‚˜ํ•˜๋‚˜ ์‹ ๊ฒฝ ์จ์•ผ ํ–ˆ๊ณ , ๊ทธ ๊ณผ์ •์—์„œ ํ”„๋ก ํŠธ์—”๋“œ ์ œํ’ˆ ๊ฐœ๋ฐœ์˜ ์ „์ฒด ํ๋ฆ„์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ž‘์€ ์›น์•ฑ์ด์ง€๋งŒ, ์‹ค์‚ฌ์šฉ์ž๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ๊ณ ๋ฏผํ•˜๋ฉฐ ๋งŒ๋“  ๋งŒํผ ํฌํŠธํด๋ฆฌ์˜ค ์ด์ƒ์˜ ์˜๋ฏธ๊ฐ€ ์žˆ์—ˆ๋˜ ํ”„๋กœ์ ํŠธ์˜€์Šต๋‹ˆ๋‹ค.