Node.js, Express, MongoDB, ๊ทธ๋ฆฌ๊ณ ES6 ๋ฅผ ์ด์ฉํ 10๊ฐ์ ์์์ ๋ณด๋ฉด ์์์ด ์๋์ผ๋ก ์ญ์ ๋๋ โํ์ ๋ ์์ ๊ณต์ ํ๋ซํผโ
๐ Live Demo: youtube-clone-bound-2025.fly.dev
- ๐ ํ๋ก์ ํธ ๊ฐ์
- ๐ง ์ ์ ๋๊ธฐ
- โ๏ธ ๊ธฐ์ ์คํ
- ๐ก ์ฃผ์ ๊ธฐ๋ฅ
- ๐งฉ ํ๋ก์ ํธ ๊ตฌ์กฐ
- ๐๏ธ ์ํคํ ์ฒ ๊ฐ์ (MVC)
- ๐ ๋ฐ์ดํฐ ํ๋ฆ
Bound๋ ๋จ์ํ ์ ํ๋ธ ํด๋ก ํํ๋ฅผ ๋์ด,
์์ฒญ ์ ํ์ด ์๋ ์๋ก์ด ํํ์ ์์ ๊ณต์ ํ๋ซํผ์ ๋ชฉํ๋ก ํฉ๋๋ค.
์์ฒญ์๊ฐ 10๊ฐ์ ์์์ ๋ณด๋ฉด ํด๋น ์์์ด ์๋ ์ญ์ ๋๋ฉฐ,
โํ์ ๋ ์ฝํ
์ธ ๊ฒฝํโ์ ์ ๊ณตํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ํ ์ดํด๋ ํ์ฅ๊ณผ
์ง์ ์ ์ธ ํ์คํ ๊ฐ๋ฐ ๊ฒฝํ์ ๋ชฉํ๋ก ์์ํ ํ๋ก์ ํธ์
๋๋ค.
๋ผ์ฐํ
, ์ธ์
๊ด๋ฆฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์ ์ง์ ๊ตฌํํ๋ฉฐ
์๋ฒ ์ฌ์ด๋ ๋ก์ง์ ํ๋ฆ์ ๊น๊ฒ ์ดํดํ ์ ์์์ต๋๋ค.
| ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
| ๐ ๋ก๊ทธ์ธ / ํ์๊ฐ์ | ์ผ๋ฐ ๊ณ์ + GitHub OAuth ๋ก๊ทธ์ธ ์ง์ |
| ๐ฅ ์์ ์ ๋ก๋ | ๋ก์ปฌ ์ ๋ก๋ ๋ฐ ์นด๋ฉ๋ผ ์ดฌ์ ๊ธฐ๋ฅ |
| ๐ ๊ฒ์ ๊ธฐ๋ฅ | ์์ ์ ๋ชฉ ๊ธฐ๋ฐ ๊ฒ์ |
| โณ ์๋ ์ญ์ ์์คํ | ์์์ด 10ํ ์ด์ ์์ฒญ๋๋ฉด ์๋ ์ญ์ |
| ๐ค ํ๋กํ ๊ด๋ฆฌ | โBoundโ๋ ์์ฒญ ํ์ ๋ฐ ์ ๋ก๋ ๋ด์ญ ํ์ธ |
| ๐ฌ ๋๊ธ ๊ธฐ๋ฅ | ์์๋ณ ๋๊ธ ์์ฑ ๋ฐ ์ญ์ ๊ฐ๋ฅ |
src/
โโโ server.js # Express ์๋ฒ ์ค์ ๋ฐ ์คํ
โโโ routers/ # ๋ผ์ฐํ
๋ก์ง (root, user, video, api)
โ โโโ rootRouter.js
โ โโโ userRouter.js
โ โโโ videoRouter.js
โ โโโ apiRouter.js
โโโ controllers/ # ์์ฒญ ์ฒ๋ฆฌ ๋ก์ง (๋น์ฆ๋์ค ๋ก์ง)
โ โโโ userController.js
โ โโโ videoController.js
โโโ models/ # Mongoose ์คํค๋ง ์ ์
โโโ views/ # Pug ํ
ํ๋ฆฟ ํ์ผ
โโโ middlewares.js # ์ธ์ฆ / ์
๋ก๋ ๋ฑ ๊ณตํต ๋ฏธ๋ค์จ์ด
โโโ assets/ # ์ ์ ํ์ผ (CSS, JS, ์ด๋ฏธ์ง)
Model โ ๋ฐ์ดํฐ ๊ด๋ฆฌ (MongoDB, Mongoose)
View โ UI ๋ ๋๋ง (Pug)
Controller โ ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ
Router โ URL ๊ฒฝ๋ก ๋ถ๋ฆฌ ๋ฐ Controller ํธ์ถ
Client Request
โ
Middleware (session, morgan, auth ๋ฑ)
โ
Router (userRouter / videoRouter ๋ฑ)
โ
Controller (๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ)
โ
Model (DB ์กฐํ ๋ฐ ์์ )
โ
Controller โ View (Pug ๋ ๋๋ง)
โ
Client Response






