
์์ฆ OTT ๋๋ฌด ๋น์ธ์ง ์๋์?
์ ๋ ๋ณด๊ณ ์ถ์ ์ํ๋ ๋๋ผ๋ง๊ฐ ์ ๋ง ๋ง์ ์ฌ๋์ด์๋๋ฐ, ์ด๊ฒ์ ๊ฒ ์ ๊ธฐ ๊ตฌ๋
ํ๊ธฐ์ ๋ถ๋ด๋ผ์ ํ๋์ ์ฐธ๋ค๊ฐ ์์ฆ ๋ชฐ์์ ๋ณด๊ณ ์์ด์.
๊ทธ ์์ค์ ์น๊ตฌ๋คํํ
์ํ ์ถ์ฒ์ ์ ๋ง ๋ง์ด ๋ฐ์๋๋ฐ์,
๊ฐ๋งํ ์๊ฐํด๋ณด๋ ๋๋ผ๋ง๋ ๋ฎค์ง์ปฌ๋ณด๋ค๋ '์ํ'๊ฐ ๊ฐ์ฅ ์ทจํฅ์ ๋๋ฌ๋ด๋ ์ฝํ
์ธ ๊ฐ๋๋ผ๊ณ ์.
๊ทธ๋์ ๋ฌธ๋ ์ด๋ฐ ์๊ฐ์ด ๋ค์์ด์.
"๋ณด๊ณ ์ถ์ ์ํ ๋ฆฌ์คํธ, ๊ทธ๋ฅ ๋งํฌ ํ๋๋ก ๊ณต์ ํ ์ ์์ผ๋ฉด ์ ๋ ๊น?"
๊ทธ๋์ ์ง์ ๋ง๋ค์์ต๋๋ค.
๋ก๊ทธ์ธ ์์ด ๋๊ตฌ๋ ์์๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ , URL๋ง์ผ๋ก ๊ณต์ ํ ์ ์๋ ์น์ฑ! โ movieshelf ๐๏ธ
ํ์ ์๊ฐ ์กฐ์จํ ๋ ์์ฃผ ์ฐ๋ ์๋น์ค์ธ [When2meet]์ ๋ ์ฌ๋ ธ์ต๋๋ค.
ํ์๊ฐ์
๋ ํ์ ์๊ณ , ๋งํฌ๋ง์ผ๋ก ์ฌ๋๋ค์ด ์ฐธ์ฌํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ๊ณ , ์ค์๊ฐ์ผ๋ก ํ์ธํ ์ ์๋ ๊ตฌ์กฐ๊ฐ ๋๋ฌด ๋ง์์ ๋ค์๊ฑฐ๋ ์.
| ํญ๋ชฉ | When2meet ๊ตฌ์กฐ ์ค๋ช | movieshelf์์์ ์ ์ฉ ๋ฐฉ์ |
|---|---|---|
| ์ธ์ฆ ๋ฐฉ์ | ๋ก๊ทธ์ธ/ํ์๊ฐ์ ์์, ์ฐธ์ฌ์ ์ด๋ฆ๋ง ์ ๋ ฅ | ๋ก๊ทธ์ธ ์์, ๋ฆฌ์คํธ ์์ฑ ์ UUID ๋ฐ๊ธ |
| ์ ๊ทผ ๋ฐฉ์ | ๊ณ ์ URL์ ํตํด ์ฐธ์ฌ (์: when2meet.com/?123abc) | movieshelf.store/view/:id ํ์์ ๋งํฌ๋ก ๊ณต์ |
| ๋ฐ์ดํฐ ๊ตฌ์กฐ | ์๊ฐ ์ ํ์ 2์ฐจ์ ๊ทธ๋ฆฌ๋ ๋ฐฐ์ด๋ก ํํ, ์๋ฒ์ ์ฆ์ ๋ฐ์๋จ | ์ํ ์ ํ ๋ฆฌ์คํธ๋ฅผ JSON ํํ๋ก ์ ์ฅ, ์๋ ์ ์ฅ ์์ |
| ์ ์ฅ ๋ฐฉ์ | ์ ์ฅ ๋ฒํผ ์์ด ์
๋ ฅ ์ ์๋ ๋ฐ์ (auto-save) | onChange ์ debounce ํ ์ ์ฅ API ํธ์ถ ๊ตฌ์กฐ ์ค๊ณ ์ค |
| ์์ ์ธ์ฆ ๋ฐฉ์ | ์ด๋ฆ+๋น๋ฐ๋ฒํธ ์ ๋ ฅ ์ ์์ ๊ฐ๋ฅ | ๋น๋ฐ๋ฒํธ๋ ์ ํ์ฌํญ์ผ๋ก, bcrypt๋ฅผ ์ด์ฉํด ํด์ ์ ์ฅ ์์ |
| ๋ฐ์ดํฐ ๊ณต์ | ์ค์๊ฐ์ผ๋ก ๋ค๋ฅธ ์ฌ๋ ์ ํ ์๊ฐ๊ณผ ๊ฒน์น๋ ์๊ฐ ์๊ฐํ | ์ถํ WebSocket ๋์ ์ผ๋ก ์ค์๊ฐ ์ํ ์ถ๊ฐ ๋ฐ์ ๊ธฐ๋ฅ ์ถ๊ฐ ์์ |
movieshelf/
โโโ backend/ โ Node + Express (Wishlist ๊ด๋ฆฌ API)
โโโ frontend/ โ React + Vite + Tailwind (UI ๊ตฌ์ฑ)
๊ฐ๋จํ API ์๋ฒ์์.
๋ก๊ทธ์ธ์ ์๊ณ , ๊ฐ ์์๋ฆฌ์คํธ์ UUID ๊ฐ์ ๊ณ ์ ID๋ง ๋ถ์ฌํด์ ๊ตฌ๋ถํด์.
์ฃผ์ ๊ธฐ๋ฅ์ ์๋ 3๊ฐ์ง์ ๋๋ค
ํด๋ ๊ตฌ์กฐ๋ ๊ธฐ๋ฅ ์ค์ฌ์ผ๋ก ๋จ์ํํ์ด์
โโโ src/
โ โโโ controllers/ โ ์์ฒญ ์ฒ๋ฆฌ
โ โโโ services/ โ TMDB ์ฐ๋, ๋ก์ง ์ฒ๋ฆฌ
โ โโโ models/ โ ํ์
์ ์
โ โโโ routes/ โ API ์๋ํฌ์ธํธ
โ โโโ utils/ โ UUID ์์ฑ ๋ฑ ์ ํธ ํจ์
ํ์ฌ๋ wishlists.json์ ์ ์ฅํ์ง๋ง,
์ดํ์๋ Firebase๋ PostgreSQL๋ก ์ด์ ํ ์์ ์ด์์.
๋น๋ฐ๋ฒํธ๋ ์ ํ์ ์ผ๋ก ์ค์ ํ ์ ์๊ณ , ๋์ค์ ์์ ๊ถํ์ ์ํด bcrypt hash๋ก ์ ์ฅํ ์์ ์ด์์.
Vite ๊ธฐ๋ฐ React ํ๋ก์ ํธ์ Tailwind CSS๋ฅผ ์
ํ์ด์.
ํ์ด์ง๋ ์ด 3๊ฐ๋ก ๊ตฌ์ฑ๋ผ ์์ด์.
| ํ์ด์ง | ๊ฒฝ๋ก | ์ค๋ช |
|---|---|---|
| ์์ฑํ๊ธฐ | /create | ์๋ก์ด ์์๋ฆฌ์คํธ ๋ง๋ค๊ธฐ |
| ๋ณด๊ธฐ | /view/:id | ๊ณต์ ๋ฐ์ ๋งํฌ๋ก ๋ฆฌ์คํธ ํ์ธ |
| ์์ ํ๊ธฐ | /edit/:id | ๋ด ๋ฆฌ์คํธ ๋ค์ ํธ์งํ๊ธฐ |
์ปดํฌ๋ํธ ๊ตฌ์กฐ๋ ์ฌํํ๊ฒ ์ ๋ฆฌํ์ต๋๋ค
โโโ components/
โ โโโ MovieList.tsx โ ์ ์ฅ๋ ์ํ ๋ชฉ๋ก ์ถ๋ ฅ
โ โโโ MovieSearch.tsx โ ์ํ ๊ฒ์์ฐฝ + ๊ฒฐ๊ณผ
โ โโโ Wishlist.tsx โ ์ ์ฅ/์์ ์ ์ฒด UI ๊ตฌ์ฑ
์น๊ตฌ๋ค์ด๋, ํน์ ์ปคํ๋ผ๋ฆฌ ๋ณด๊ณ ์ถ์ ์ํ๋ฅผ ์ ๋ฆฌํ๊ณ ๊ณต์ ํ ์ ์๋ ๊ณต๊ฐ.
movieshelf๋ ๊ทธ๋ฐ ๋๊ตฌ๊ฐ ๋๊ธธ ๋ฐ๋ผ๋ ๋ง์์์ ์์๋์ต๋๋ค.
์์ง MVP์ง๋ง, ๋จ์ํ ๊ตฌ์กฐ ๋๋ถ์ ๊ธ๋ฐฉ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ํ์ฅํ ์ ์์ ๊ฒ ๊ฐ์์.
๋น์ทํ ์์ด๋์ด๊ฐ ์์ผ์ ๋ถ๋ค๊ป๋ ๋์์ด ๋๊ธธ ๋ฐ๋ผ๋ฉฐ ๊ตฌ์กฐ ๊ณต์ ํฉ๋๋ค ๐
์ด๋ฒ ํฌ์คํธ์์๋ ์ ๋ฐ์ ์ธ ๊ธฐํ๊ณผ ๊ตฌ์กฐ ์์ฃผ๋ก ์๊ฐํ์ง๋ง, ๋ค์ ๊ธ์์๋ ์ค์ ๊ฐ๋ฐ์ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์กฐ๊ธ ๋ ๊ณต๋ถํด๋ณด๋ ค ํฉ๋๋ค.
๋ค์ ๊ธ์์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ํ๋์ฉ ๋ฏ์ด๋ณด๋ฉด์ ์ ์ ํํ๋์ง,
์ด๋ป๊ฒ ๋ ๋์ ๋ฐฉ์์ผ๋ก ๋ฆฌํฉํฐ๋งํ ์ ์์์ง ๊ณ ๋ฏผ์ ๊ณต์ ํด๋ณด๊ฒ ์ต๋๋ค.