Next.js(React + TypeScript) Base
๋งค๋ฒ ๋ก๊ทธ์ธ ์ ์ฐจ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ MVP์ ํ๋ก์ธ์ค
- ์ง์ญ/์ ์ญ ์ํ๋ง ์ ์งํ๋ ๊ฒ์ด ํ๊ณ์ด๋ฏ๋ก ์ฌ์ดํธ์์ ์ดํํ๊ฑฐ๋ ์๋ก๊ณ ์นจ์ด ์ผ์ด๋๋ฉด ์ธ์ฆ ์ ๋ณด ์ด๊ธฐํ
์ฟ ํค ๋ก๊ทธ์ธ์ ์น ์ฌ์ดํธ์์ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๊ณ ์ธ์ ์ ์ ์งํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋
-
๋ณด์ ์ํ
- ์ฟ ํค๋ ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ํด์ปค๊ฐ ํด๋น ์ฟ ํค๋ฅผ ํ์ณ์ ์ก์ธ์ค๋ฅผ ์ป์ ์ ์๋ ๋ณด์ ์ํ์ด ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฟ ํค๋ ์ํธํ๋๊ฑฐ๋ ์์ ํ ํ๋กํ ์ฝ์ ํตํด ์ ์ก๋์ด์ผ ํฉ๋๋ค.
-
์ฟ ํค ๋ณ์กฐ
- ํด์ปค๋ ์ฟ ํค๋ฅผ ์กฐ์ํ์ฌ ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ณ์ ์ ๋ก๊ทธ์ธํ๊ฑฐ๋ ์ธ์ ์ ์์กฐํ ์ ์์ต๋๋ค. ์น ์ฌ์ดํธ๋ ์ฟ ํค์ ๋ฌด๊ฒฐ์ฑ์ ํ์ธํ๊ณ ์กฐ์์ด ๊ฐ์ง๋๋ฉด ์ฌ์ฉ์๋ฅผ ๋ก๊ทธ์์์์ผ์ผ ํฉ๋๋ค.
-
์ธ์ ๊ด๋ฆฌ
- ์ฟ ํค๋ฅผ ์ฌ์ฉํ ๋ก๊ทธ์ธ ์์คํ ์ ์ธ์ ์ ์ ์งํ๊ธฐ ์ํด ์๋ฒ ์ธก์์ ์ฌ์ฉ์ ์ํ๋ฅผ ์ถ์ ํด์ผ ํฉ๋๋ค. ์ด์ ๋ํ ์ ์ ํ ์ธ์ ๊ด๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ผ๋ฉด ์ธ์ ๋ณ์กฐ, ์ค๋ณต ๋ก๊ทธ์ธ ๋ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
-
์ฌ์ฉ์ ๊ฒฝํ ๋ฌธ์
- ์ฟ ํค๋ ํน์ ๋ธ๋ผ์ฐ์ ์ ์ฅ์น์ ์ข ์๋์ด ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ ์ฅ์น์์ ๋ก๊ทธ์ธํ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์ฌ์ ๋ ฅํด์ผ ํ ์๋ ์์ต๋๋ค. ๋ํ, ์ฟ ํค์ ๋ง๋ฃ ๊ธฐ๊ฐ์ด ์ง๋๋ฉด ์๋์ผ๋ก ๋ก๊ทธ์์๋์ด ๋ค์ ๋ก๊ทธ์ธํด์ผ ํ ์ ์์ต๋๋ค.
-
๊ฐ์ธ์ ๋ณด ๋ฌธ์
- ์ฟ ํค๋ ์ฌ์ฉ์์ ๊ฐ์ธ์ ๋ณด๋ฅผ ํฌํจํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ ์ ํ ๋ณดํธ ๋ฐ ๊ฐ์ธ์ ๋ณด ์ฒ๋ฆฌ ์ ์ฑ ์ด ํ์ํฉ๋๋ค. ์ฌ์ฉ์์ ๋์๋ฅผ ์ป์ง ์์ ์ฟ ํค ์ฌ์ฉ์ ๊ฐ์ธ์ ๋ณด ๋ณดํธ ๋ฒ๊ท๋ฅผ ์๋ฐํ ์ ์์ต๋๋ค.
์ถ๊ฐ์ ์ธ ๋ณด์ ๋ฉ์ปค๋์ฆ(์: CSRF(Cross-Site Request Forgery) ๋ฐฉ์ด, ์ฟ ํค ํ ํฐ ์ฌ์ฉ ๋ฑ)์ ๊ตฌํํ๊ฑฐ๋ ๋ค๋ฅธ ์ธ์ฆ ๋ฐฉ๋ฒ(์: OAuth, ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ)์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- session ์ธ์ฆ์ ์๋ฒ ์ธก ์์ ํ์: ์ฐธ๊ณ
- ์ฐ๋ฆฌ๋ Next.js์ API Routes๋ฅผ ์ฌ์ฉํ๊ณ iron-session ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํฉ๋๋ค.
์๋ฒ ์์ ์ด ํ์ํ ์ํฉ์ ํจ์คํ ๊ฒ์.
kakao, naver, google