/OMDB-API-MovieSite

API Link: https://www.omdbapi.com/

Primary LanguageJavaScriptMIT LicenseMIT

๐ŸŽฅ ์˜ํ™” ๊ฒ€์ƒ‰ ์‚ฌ์ดํŠธ ํ”„๋กœ์ ํŠธ

๐Ÿ”— API ๋ฐ ๋ฐฐํฌ ์‚ฌ์ดํŠธ

  • API ์‚ฌ์ดํŠธ: The Open Movie Database
  • ๋ฐฐํฌ ์ฃผ์†Œ: https://jolly-malasada-e12b2c.netlify.app

๐Ÿ”ง ์‚ฌ์šฉ ๊ธฐ์ˆ /์Šคํƒ


๐Ÿ’ก ์ฃผ์š” ๊ตฌํ˜„ ์‚ฌํ•ญ

1. Vanilla JS๋กœ ์ตœ๋Œ€ํ•œ SPA(Single Page Application)๊ณผ ์œ ์‚ฌํ•œ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

React ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ธฐ ์ „, ๋ชจ๋˜ JS์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋†’์ด๊ณ  ์ˆ™๋ จ๋„๋ฅผ ์ตœ๋Œ€ํ•œ ๋†’์ด๊ธฐ ์œ„ํ•œ ๋งˆ์Œ์— ๋ฐ”๋‹๋ผ JS๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜์˜€๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ธธ๊ฒŒ ๋Š˜์–ด์ ธ์„œ ์“ธ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ๋ณด๊ธฐ ์‰ฝ๊ณ  ๊ฐ„๊ฒฐํ•œ ๋กœ์ง์œผ๋กœ, ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊นŠ์ด ๊ณ ๋ฏผํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

  • history.pushState API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  URL์„ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€์œผ๋ฉฐ, window.location API๋ฅผ ํ†ตํ•ด url ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ •๋ณด๋ฅผ JS๋กœ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•˜์—ฌ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด url ํŒŒ๋ผ๋ฏธํ„ฐ ์ฃผ์†Œ์ƒ์—์„œ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์˜ ํ˜•ํƒœ๋ฅผ ์ค€์ˆ˜ํ•˜๋ฉด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋ Œ๋”๋งํ•˜์—ฌ๋„ ์›ํ™œํ•˜๊ฒŒ ๊ฒ€์ƒ‰ ๋ฐ ๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด 'https://์ฃผ์†Œ/?s=๊ฒ€์ƒ‰์–ด'์˜ ๊ฒ€์ƒ‰์–ด๋งŒ ์กฐ์ •ํ•˜์—ฌ ์ ‘์†ํ•˜์—ฌ๋„ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ๊ฐ€ ๊ทธ๋ ค์ง„ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
  • ๋˜ํ•œ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ํ™œ์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— API์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ต์‹ ํ•˜๋Š” ๋ชจ๋“ˆ๋ถ€๋ถ„์— ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆ˜๊ฐ€ ์ค„์–ด๋“œ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.(ํŽธ๋ฆฌํ–ˆ๋‹ค)

2. .env(Dotenv)๋ฅผ ํ†ตํ•ด API Key๋ฅผ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ์ฒ˜๋ฆฌํ•˜์˜€๋‹ค.

3. Babel์„ ํ†ตํ•ด JS ํŠธ๋žœ์ŠคํŒŒ์ผ๋ง์„ ์ ์šฉํ•˜์˜€์œผ๋ฉฐ, WebPack์„ ํ†ตํ•ด ํŒŒ์ผ ๋ฒˆ๋“ค๋ง์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์„ ๋†’์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด Babel์„ ์‚ฌ์šฉ, ํŒŒ์ผ ๋ฒˆ๋“ค๋ง ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ™˜๊ฒฝ ์„ธํŒ…๋ฉด์—์„œ๋„ ๋‹ค์–‘ํ•œ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ WebPack์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

  • ์›นํŒฉ์„ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๊ณ , ๊ธฐ๋ณธ path๋ฅผ ์ง€์ •ํ•˜๋ฉฐ, ๊ธฐ๋ณธ ๊ฒฝ๋กœ ๋ฐ ์ƒ๋žตํ•  ํ™•์žฅ์ž๋ช… ๋˜ํ•œ ์„ค์ •ํ•˜์˜€๋‹ค.
  • ์›นํŒฉ์„ ํ™œ์šฉํ•˜์—ฌ ํ˜น์—ฌ๋‚˜ ๋ฐœ์ƒํ•  ๋„คํŠธ์›Œํฌ์˜ ๋ถ€ํ•˜๋ฅผ ๋‹ค์†Œ ์™„ํ™”์‹œ์ผœ์ฃผ์—ˆ๋‹ค.
  • ๋ฐ”๋ฒจ์„ ํ†ตํ•ด ์ตœ์‹ ๋ฒ„์ „์˜ ๋ฌธ๋ฒ•์„ ๊ตฌ๋ฒ„์ „์œผ๋กœ ๋ณ€ํ™˜(ํŠธ๋žœ์ŠคํŒŒ์ผ๋ง)ํ•˜์—ฌ ์กฐ๊ธˆ ๋” ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์ด ๋†’์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๋‹ค.

4. SCSS, PostCSS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ€์ผ ์ž‘์—…์„ ํ•˜์˜€๋‹ค.

SCSS์˜ ๊ฒฝ์šฐ, ๊ธฐ์กด CSS๋ฅผ ์ž‘์„ฑํ•˜์˜€์„ ๋•Œ์˜ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ, ๋ณต์žกํ•œ ์š”์†Œ ์ถ”๊ฒฉ ๋ฐ ๊ฐ€์‹œ์„ฑ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ๋‹ค์†Œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด ์ฑ„์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

  • SCSS๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น„์Šทํ•œ ์Šคํƒ€์ผ๋ง์— ๋Œ€ํ•œ ์žฌ์‚ฌ์šฉ,
  • mixin, include๋ฅผ ํ†ตํ•ด ๊ฐ„ํŽธํ•œ ๋ชจ๋“ˆํ™”๋ฅผ ๊ฒฝํ—˜ํ•˜์˜€๋‹ค.(๋ฐ˜์‘ํ˜• ์ž‘์—… ์‹œ์— ์ด๋ฅผ ํ™œ์šฉํ•˜์˜€๋‹ค.)
  • ํƒœ๊ทธ์˜ ์ž์‹์š”์†Œ(ํ˜น์€ ๋ถ€๋ชจ์š”์†Œ)๋ฅผ ์ง€์ •ํ•  ๋•Œ, ๋ธ”๋ก in ๋ธ”๋ก์˜ ํ˜•ํƒœ๋ฅผ ๋„๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ๊ฐ„๊ฒฐ์„ฑ ๋ฉด์—์„œ๋„, ๊ฐ€์‹œ์„ฑ ๋ฉด์—์„œ๋„ ๋งค์šฐ ํŽธ๋ฆฌํ•œ ๋ชจ์Šต์„ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค.

5. ์ตœ๋Œ€ํ•œ API์—์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•˜์˜€๋‹ค.

  • ์˜ํ™” ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๋ฉ”์ธ์œผ๋กœ ์–ด๋–ค ์˜ํ™”๋ฅผ ๊ฒ€์ƒ‰ํ• ์ง€, ํ•œ ๋ฒˆ์— ๋ช‡๊ฐœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์„์ง€, ์ƒ์„ธ ์ •๋ณด๋Š” ์–ด๋–ป๊ฒŒ ๋„์›Œ์•ผ ํ• ์ง€, ์ƒ์„ธ ์ •๋ณด ์•ˆ์—๋Š” ์–ด๋–ค ์ปจํ…์ธ ๋ฅผ ํฌํ•จ์‹œ์ผœ์•ผ ํ• ์ง€ ๋“ฑ ๋ฒ„ํŠผ์ด๋‚˜ ์•„์ดํ…œ, ์ปจํ…์ธ ๋“ค์˜ ๋ฐฐ์น˜๋‚˜ ๊ธฐ๋Šฅ๋“ค์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ๋ณด์—ฌ์ค˜์•ผ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋‹ค ํŽธํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ์„์ง€์— ๋Œ€ํ•ด ๊นŠ์ด ๊ณ ๋ฏผํ•˜๊ณ  ๋งŽ์€ ์‹œ๊ฐ„์„ ๋“ค์—ฌ ๊ตฌํ˜„ํ–ˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ๋‚˜์˜จ ๊ธฐ๋Šฅ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
  • ๊ฒ€์ƒ‰ ์‹œ, ์—”ํ„ฐ or ํ™”๋ฉด์ƒ์— ์žˆ๋Š” ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๊ฒ€์ƒ‰
  • ์ฒ˜์Œ ์ดˆ๊ธฐ ๋ฉ”์ธ ํ™”๋ฉด๊ณผ ๊ฒ€์ƒ‰ ํ™”๋ฉด์„ ๋‚˜๋ˆ„์–ด ํŽ˜์ด์ง€ ์ฒ˜๋ฆฌ
  • ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๋”๋ผ๋„ ์›๋ž˜ ๊ฒ€์ƒ‰ํ•˜๋ ค๋˜ ์ •๋ณด๋Š” ๊ทธ๋Œ€๋กœ ๋‚จ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.(์ฟผ๋ฆฌ์ŠคํŠธ๋ง ํ™œ์šฉ)
  • ์ตœ๋Œ€ํ•œ ํƒœ๊ทธ๋‚˜ ์•„์ดํ…œ๋“ค์„ ์žฌ๋ฐฐ์น˜ํ•˜๊ฑฐ๋‚˜ ๋ Œ๋”๋ง ํ•˜๋Š” ์š”์†Œ๋Š” ์—†์• ๋„๋ก ํ•œ๋‹ค.(๋กœ๋”ฉ ์‹œ๊ฐ„์„ ๋‚ฎ์ถ˜๋‹ค.) -> ์˜ํ™”์— ๋Œ€ํ•œ ์ƒ์„ธ ์ •๋ณด๋Š” modal ์ฐฝ์„ ํ™œ์šฉํ–ˆ๋‹ค.
  • ์˜ต์…˜์€ ๊ผญ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์€ ์˜ต์…˜๋งŒ ๋„ฃ์–ด๋‘๋ฉฐ, ํ•ด๋‹น ์˜ต์…˜์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์•„๋„ ๊ฒ€์ƒ‰์€ ์›ํ™œํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋Š” ๋ฌดํ•œ์Šคํฌ๋กค์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.
  • ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์€ ํ•ญ์ƒ ๋ฒ„ํŠผ ํ•˜๋‚˜๋กœ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.(input/form clear ๋ฒ„ํŠผ)
  • ํ˜„์žฌ ๋‚˜์™€์žˆ๋Š” ์˜ํ™” ์ •๋ณด๋“ค ๋‚ด์—์„œ ์ตœ์‹ ์ˆœ, ์˜ค๋ž˜๋œ ๋…„๋„ ์ˆœ์œผ๋กœ ์ •๋ ฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.(์ „์ฒด ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์ฃผ์–ด์ง„ API์˜ ํ•œ๊ณ„๋กœ ์ธํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.)

๐Ÿ“• ์• ๋กœ์‚ฌํ•ญ, ๊ฐœ์„ ์ 

  1. OS๊ฐ„(window, mac) ๋ณด์ด๋Š” ํ™”๋ฉด์ด ์กฐ๊ธˆ์”ฉ ๋‹ฌ๋ผ ์Šคํƒ€์ผ๋ง์ด๋‚˜ ๋ ˆ์ด์•„์›ƒ์„ ๋งž์ถ”๊ธฐ ์–ด๋ ค์› ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ window ํ™”๋ฉด์€ ์กฐ๊ธˆ์”ฉ ํ”ฝ์…€๋‹จ์œ„๋กœ ๊ทธ๋ฆผ์ด ์งค๋ฆฌ๊ฑฐ๋‚˜ ๋ถ€์กฑํ•œ ํ™”๋ฉด์„ ์ฐพ์•„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  2. ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ•จ์ˆ˜์—์„œ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜๋“ค์„ ํ•œ ๋ชจ๋“ˆ์— ์ „์—ญ๋ณ€์ˆ˜๋กœ ๋ชฐ์•„์„œ ๋„ฃ์–ด๋†“์•˜๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“ˆํ™”์— ๋Œ€ํ•œ ์• ๋กœ์‚ฌํ•ญ์ด ์กฐ๊ธˆ ์žˆ์—ˆ๋‹ค.(์ „์—ญ๋ณ€์ˆ˜๋กœ ์ธํ•ด ๋ชจ๋“ˆํ™”ํ• ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜/์ฝ”๋“œ๋ฅผ ํ•œ ๊ณณ์— ๋„ฃ์„ ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค.)
  3. ํŽ˜์ด์ง€๋ฅผ ์ดˆ๊ธฐ์— ๋ Œ๋”๋งํ•  ๊ฒฝ์šฐ, css๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์€ htmlํƒœ๊ทธ์˜ ๋ชจ์Šต์ด ํ™”๋ฉด์— ์ž ๊น ๋‚˜์˜จ๋‹ค. ํ•ด๋‹น ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ด์œ ๋Š” ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๋‹ค.(scss์˜ ์˜ํ–ฅ? webpack?)
  4. ํŠน์ • ๊ธฐ๋Šฅ(ํƒœ๊ทธ๊ฐ€ ๋ณด์ด๊ณ  ์•ˆ๋ณด์ด๊ณ , ํƒœ๊ทธ๋ฅผ ํด๋ฆญ ์‹œ ๋ฐ˜์‘ํ•˜๋Š” ์•ก์…˜)์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ค‘๋ณต๋˜๋Š” queryselector, addeventlistener๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•˜๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ํ•œ htmlํŒŒ์ผ ์•ˆ์— ๊ฒ€์ƒ‰ํŽ˜์ด์ง€์šฉ ๊ฒ€์ƒ‰ form, ๋ฉ”์ธํŽ˜์ด์ง€์šฉ ๊ฒ€์ƒ‰ form ์ด ๋‘๊ฐœ๋ฅผ ๋ชจ๋‘ ์ž‘์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์กฐ์ž‘ํ•˜๋Š”๊ฒƒ ๋˜ํ•œ ํ‰์†Œ ์กฐ์ž‘์˜ 2๋ฐฐ์ •๋„ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋“ค์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ฆ‰, form ์ƒ์˜ input value๋ฅผ ๋ฐ›์•„ api๋ฅผ ํ˜ธ์ถœํ•˜๋ ค ํ•˜๋ฉด, ์šฐ์„  ํ•ด๋‹น input์ด ๋ฉ”์ธํ™”๋ฉด์ƒ์˜ input์ธ์ง€, ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€ ์ƒ์˜ input์ธ์ง€๋ฅผ ๋จผ์ € ํŒ๋ณ„๋ถ€ํ„ฐ ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ๊ธธ๊ฒŒ ์ž‘์„ฑ๋˜์—ˆ๋‹ค. ์ฐจ๋ผ๋ฆฌ ํ•œ form ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™”๋ฉด์ƒ์˜ ์œ„์น˜๋งŒ ๋ณ€๊ฒฝํ•˜๋„๋ก ํ–ˆ๋‹ค๋ฉด ๋” ๋‚ซ์ง€ ์•Š์•˜์„๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.
  5. scss์˜ mixin์ด๋‚˜ include๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜์˜€๋‹ค.
  6. UX/UI๋ฅผ ๊ณ ๋ คํ•œ ๋ ˆ์ด์•„์›ƒ/๋””์ž์ธ ์„ค๊ณ„๋Š” ๋งŽ์ด ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.. ๋ฐ˜์‘ํ˜• ์„ค๊ณ„๊ฐ€ ๋„ˆ๋ฌด ๊นŒ๋‹ค๋กœ์šด ๊ฒƒ ๊ฐ™๋‹ค.
  7. ์ „์ฒด์ ์œผ๋กœ ๋ชจ๋“ˆํ™”๋ผ๊ธฐ ๋ณด๋‹ค๋Š” ํ•จ์ˆ˜๋ฅผ ๋งˆ๊ตฌ์žก์ด๋กœ ์ฐข์–ด ๋ถ„๋ฆฌํ•ด ๋†“์€ ๋Š๋‚Œ์ด๋‹ค. ๋„ค์ด๋ฐ ๋˜ํ•œ ๊ทœ์น™์ ์ด๊ณ  ์ง๊ด€์ ์ด์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค.

โš™๏ธ ์•ž์œผ๋กœ์˜ TODO

  1. ํŽ˜์ด์ง€ ์œ ์ง€๋ณด์ˆ˜
  2. ๋ฐ˜์‘ํ˜• ์›น ๋””ํ…Œ์ผ ๊ตฌํ˜„
  3. local storage๋ฅผ ํ™œ์šฉํ•œ ์ฐœ, ์ตœ๊ทผ ๋ณธ ์˜ํ™” ๋ชฉ๋ก ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ
  4. ํด๋กœ์ €์˜ ๊ฐœ๋…์„ ์‚ฌ์šฉํ• ๋งŒํ•œ ๊ณณ์ด ์žˆ์„์ง€ ๊ณ ๋ฏผํ•˜๊ณ  ์ ์šฉํ•ด๋ณด๊ธฐ

๐Ÿ“„ Usage

์„ค์น˜

  • git clone ํ›„, root path ์— ํ„ฐ๋ฏธ๋„์— ํ•ด๋‹น ๋ช…๋ น์–ด ์ž…๋ ฅ
npm install

์‹คํ–‰

npm run dev