ํ๋ก์ ํธ ๊ฐ์
- welcoming(feat. ์ด์์ ์ฐ๋ฆฌ์ง) ํ๋ก์ ํธ๋ ์ผํ๋ชฐ์ ์ฃผ์ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๋ ํ๋ก์ ํธ ์
๋๋ค.
- ๋ฐฐํฌ ๋งํฌ
- Github link
- ํ๋ก์ ํธ ๊ธฐ๊ฐ : 2022.01 ~ ์งํ์ค
๊ธฐ์ ์คํ
-
๋ฆฌ์กํธ ํ๋ ์์ํฌ
-
์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR) ์ง์
- ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง(CSR) : ์ด๊ธฐ์ ํ์ด์ง๊ฐ ๋ ๋๋ ํ, ํด๋ผ์ด์ธํธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ฉฐ ๋ค์ ๋ ๋๋ง
- SSR : ์ฒ์ ๋ ๋ ๋ ๋ ์๋ฒ ์ธก์์ ๋ฐ์ดํฐ๋ ํจ๊ป ๊ฐ์ ธ์์ ๊ทธ๋ ค์ค๋ค.
โ ํ ๋ฒ์ ๋ ๋๋ง์ด ๋๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋น ๋ฅด์ง๋ง ํ์ด์ง๋ฅผ ๋๊ธธ ๋ ๋ง๋ค ์ค๋ณต๋๋ ๋ฐ์ดํฐ๋ ์๋ฒ์ธก์์ ๋ค์ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์ ํ์ด์ง ๊ณผ๋ถํ์ ์ํ์ฑ์ด CSR์ ๋นํด ํฌ๋ค.
โ ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ , SSR๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ํ์ด์ง๊ฐ ๋ก๋ฉ๋ ๋ ๋ฐ์ดํฐ๋ ๋์์ ๋ก๋๋๋ฉฐ ๊ฒ์์์ง์ ํด๋น ๋ฐ์ดํฐ๋ค์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค.
โ ์ด๊ธฐ ํ์ด์ง๊ฐ ๋น์ด์๋ ์ํ์ธ CSR๊ณผ ๋ฌ๋ฆฌ ๊ฒ์ ์์ง ์ต์ ํ(SEO)์ ํจ๊ณผ์
-
์ฐธ๊ณ ๋งํฌ : Next.js 100% ํ์ฉํ๊ธฐ
TypeScript๋ JavaScript๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ์
๋ฌธ๋ฒ์ ์ถ๊ฐํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
-
JavaScript : ๋์ ํ์
์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด
โ ๋ฐํ์์์ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค.
-
TypeScript : ์ ์ ํ์
์ ์ปดํ์ผ ์ธ์ด
- ํ์
์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ ๋๋ ๋ฐ๋ฒจ(Babel)์ ํตํด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก ๋ณํ
- ์ฝ๋ ์์ฑ ๋จ๊ณ์์ ํ์
์ ์ฒดํฌํด ์ค๋ฅ๋ฅผ ํ์ธ
- ๋ฏธ๋ฆฌ ํ์
์ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ์คํ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค.
- ๋จ์ : ์ฝ๋ ์์ฑ ์ ๋งค๋ฒ ํ์
์ ๊ฒฐ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฒ๊ฑฐ๋กญ๊ณ ์ฝ๋๋์ด ์ฆ๊ฐํ๋ฉฐ ์ปดํ์ผ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
-
์ฐธ๊ณ ๋งํฌ : ํ์ฉ๋๊ฐ ๋์์ง๋ ์น ํ๋ก ํธ์๋ ์ธ์ด, ํ์
์คํฌ๋ฆฝํธ(TypeScript)
-
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ(get) ํนํ๋์ด ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ/React Hooks
โ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ํนํ๋์ด ์์ผ๋ฏ๋ก 'post' ๋ฑ์ ๋์์ ์์ด์๋ ์ด์ ์ด ์๋ค.(๋ถ๊ฐ๋ฅํ ๊ฒ์ ์๋)
-
์ฐธ๊ณ ๋งํฌ : axios ์ธ๊ธธ์ธ์, swr์ ๋ง๋๋ค.
์ฝ๋ฉ ์ปจ๋ฒค์
์ ์ค์ํ๋ฉด ๊ฐ๋
์ฑ์ด ์ข์์ง๊ณ ์ํฐํจํด์ ์ฝ๋๋ฅผ ์๋ฐฉํ ์ ์๋ค. ํ์ง๋ง ๊ฐ๋ฐ์๊ฐ ์ฝ๋ฉ ์ปจ๋ฒค์
์ ์ ๋ฐ๋ฅด๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ด๋ ค์ฐ๋ฏ๋ก ์ ์ ๋ถ์์ ์ด์ฉํ์ฌ ์ฝ๋ฉ ์ปจ๋ฒค์
์ ์๋์ผ๋ก ๊ฒ์ฆํ๊ณ ์ ์ฌ์๋ฌ๋ฅผ ์ฐพ์๋ธ๋ค.
์ ์ ๋ถ์ : ์ฝ๋์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ๋ฒ๊ทธ๋ฅผ ํผํ๊ธฐ ์ํด ์คํ ์ ์ ๋ฏธ๋ฆฌ ์ฝ๋๋ฅผ ๋ถ์ํ๋ ๋ฐฉ๋ฒ
-
ESLint
- ์ฝ๋์ ์ ์ฌ์ ์๋ฌ๋ ์ค๋ฅ ํ์ง
- Airbnb Style Guid๋ฅผ ๋ง์ด ์ฌ์ฉ
โ ๊ท์น์ด ์๊ฒฉํ๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํธ์ ํน์ฑ์ ๋ฐ๋ผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ปค์คํฐ๋ง์ด์งํ์ฌ ์ฌ์ฉ
-
Prettier
- ์ ํด์ง ๊ท์น์ ๋ฐ๋ผ ์๋์ผ๋ก ์ฝ๋ ์คํ์ผ์ ์ ๋ฆฌํด์ฃผ๋ ๋๊ตฌ
- ํฌ๋งทํ
๊ณผ ๊ด๋ จ๋ ๋ถ๋ถ๋ง ๋์์ด ๋๋ฏ๋ก ์ฝ๋ ํ์ง ๊ท์น๊ณผ ๊ด๋ จํด์๋ ESLint์ ๊ฐ์ ๋๊ตฌ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
-
์ฐธ๊ณ ๋งํฌ
GraphQL์ด ์ ์ฉ๋ ํ๋ก์ ํธ๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์๊ฒ ํด์ฃผ๋ Node.js ํจํค์ง
- Apollo Client : GraphQL์ ํตํด, ํด๋ผ์ด์ธํธ์์ LocalState๋ฅผ ์ด์ฉํ ์ ์๊ฒ ๋ง๋ค์ด์ค
- Apollo Server : GraphQL์ด ์ ์ฉ๋ ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ง๋ค์ด์ค
Facebook์์ ๊ฐ๋ฐํ ์ฟผ๋ฆฌ ์ธ์ด
์๊ตฌ์ฌํญ ๋ช
์ธ
์ํ ๋ฑ๋ก
- ํน์ ๊ถํ (Admin)์ ๊ฐ์ง ์ ์ ๋ ์ํ ๋ฑ๋ก์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
- ์ํ ๋ฑ๋ก์๋ Editor๋ฅผ ๋ถ์
๋๋ค.(CKEditor ๋ฑ)
- ์ํ์ ๋ฑ๋กํ๋ฉด ๋ฐ๋ก ๋ชฉ๋ก์ ๋
ธ์ถ๋ฉ๋๋ค.
์ํ ๋ชฉ๋ก ๋
ธ์ถ
- ์ํ์ ์นดํ
๊ณ ๋ฆฌ๋ณ ํํฐ๊ฐ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
- ์ํ์ ์นดํ
๊ณ ๋ฆฌ๋ 20๊ฐ์ง ์ ๋๋ก ๊ตฌ์ฑ (์ธ๋ถ ์นดํ
๊ณ ๋ฆฌ ํฌํจ)
- ์นดํ
๊ณ ๋ฆฌ๋ฅผ ์กฐํฉํ์ ๋ ์กฐํ๊ฐ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
- ์ํ์ ๊ฒ์์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
- ๊ฒ์ํ์ ๋ ๊ฒ์ ๊ฒฐ๊ณผ์ ๋ง๋ ์์ดํ
๋ง ๋ณด์ฌ์ ธ์ผ ํฉ๋๋ค.
- ๊ฒ์์ด์ ๋ง๋ ์์ดํ
์ ๊ฐ์กฐํด์ฃผ์ธ์.
- ์ํ์ 25๊ฐ์ฉ ํ๋ฒ์ ๋ณด์ฌ์ฃผ๋ฉฐ ํ์ด์ง๋ค์ด์
์ ์ง์ํด์ผ ํฉ๋๋ค.
- (๊ฐ๋ฅํ๋ค๋ฉด) ์ํ ๋ชฉ๋ก์ ๋ฌดํ ์คํฌ๋กค๋ก ๊ตฌํํด์ฃผ์ธ์.
์ํ ์์ธ ๋
ธ์ถ
์ํ๋ณ ๋๊ธ ๋
ธ์ถ
- ๋๊ธ์ 25๊ฐ์ฉ ํ๋ฒ์ ๋ณด์ฌ์ฃผ๋ฉฐ ํ์ด์ง๋ค์ด์
์ ์ง์ํด์ผ ํฉ๋๋ค.
- ๋๊ธ์๋ ๋๋๊ธ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋๋๊ธ์ ์ต๋ 1๋ฒ๊น์ง๋ง depth๋ฅผ ์ง์ํฉ๋๋ค.
- ๋๊ธ์๋ ์ด๋ฏธ์ง ์ฝ์
์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
ํ์
- ๋ก๊ทธ์ธ๐ฅ / ๋ก๊ทธ์์๐ฅ
- ํ์๊ฐ์
๐ฅ / ํ์ํํด
- ์์ด๋ ์ฐพ๊ธฐ / ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ โ ๊ฐ์
ํ ์ด๋ฉ์ผ๋ก ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ํ๊ธฐ๐ฅ
์์๋ฆฌ์คํธ
- ์ํ ์์๋ฆฌ์คํธ๊ฐ ์กด์ฌํ์ฌ ๋ฑ๋กํ ์ ์์ด์ผ ํฉ๋๋ค.
- ์์๋ฆฌ์คํธ์ ๋ฑ๋ก ๊ฐ๋ฅํ ๊ฐฏ์์ ์ ํ์ ์์ต๋๋ค.
์ฅ๋ฐ๊ตฌ๋
- ์ฅ๋ฐ๊ตฌ๋์ ์์ดํ
์ 25๊ฐ๊น์ง ๋ด์ ์ ์์ต๋๋ค.
- ํด๋น ๊ณ์ ๊ณผ ์ฅ๋ฐ๊ตฌ๋๋ ์ฐ๋๋์ด์ผ ํฉ๋๋ค.
๊ฒฐ์
- ์ฃผ์ ๋ฑ์ ์
๋ ฅ๋ฐ์ ๊ฒฐ์ ๋ฐ๋ ํ์ด์ง๋ฅผ ๊ตฌํํฉ๋๋ค.
- ์ฃผ์ ๊ฒ์์๋ ์ฃผ์ ๊ฒ์ API(๋ค์)๋ฅผ ์ฌ์ฉํด์ฃผ์ธ์.
- ์ง์ญ๋ณ๋ก ๋ฐฐ์ก๋น ์ฃผ๋ฌธ ๋ก์ง์ ์ถ๊ฐํด์ฃผ์ธ์.
- ์ผ๋ฐ ๋ฐฐ์ก๋น : 2,500์
- ๋์์ฐ๊ฐ์ง๋ฐฉ(์ ์ฃผ, ์ธ๋ฆ๋) : 10,000์
- ์ฅ๋ฐ๊ตฌ๋๊ฐ ํน์ ๊ธ์ก(50,000์)์ ๋๋ ๊ฒฝ์ฐ, ๋ฌด๋ฃ๋ฐฐ์ก
- ๊ฒฐ์ ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ ๊ฒฝ์ฐ, ์ฅ๋ฐ๊ตฌ๋๋ฅผ ์ด๊ธฐํํ์ง ์์ต๋๋ค.
- ๊ฒฐ์ ๋ฒํผ์ ๋๋ ์ ๋, ๊ฒฐ์ ์ ํฌํจ๋ ๋ฐ์ดํฐ๋ง ๋ณด์ฌ์ค ์ ์์ด์ผ ํฉ๋๋ค.
(๊ณตํต) ๋ค๋น๊ฒ์ด์
- ๋ค๋น๊ฒ์ด์
์๋ ํ์ด์ง๊ฐ ์ด๋, ์ ์ ์ ๋ณด ๋
ธ์ถ ๋ฑ์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
๊ธฐํ์
- ์ผํ๋ชฐ์์ ์์ฃผ ์ฐ์ด๋ ๊ธฐํ์ ํ์ด์ง๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
- ๊ธฐํ์ ์ ์ต๋ ๊ฐฏ์๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉฐ, ๊ณต์ ํ๊ธฐ๊ฐ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
(์นด์นด์คํก ๊ณต์ ํ๊ธฐ, ํ์ด์ค๋ถ ๊ณต์ ํ๊ธฐ, ๋ค์ด๋ฒ ๊ณต์ ํ๊ธฐ ๋ฑ)
๊ธฐ์ ์๊ตฌ์ฌํญ
- ๋ชจ๋ ํ์ด์ง๋ ๊ณต์ ํ๊ธฐ๊ฐ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
- ๋ก๊ทธ์ธ์ ์ ์ ๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข
๋ฃํด๋ ์ ์ง๋์ด์ผ ํฉ๋๋ค.๐ฅ
- ๋ชจ๋ ํ์ด์ง๋ ๋ฐ์ํ์ ์ง์ํด์ผ ํฉ๋๋ค.
- ๋ชจ๋ ํ์ด์ง๋ ์ ๊ทผ์ฑ์ ์ค์ํด์ผ ํฉ๋๋ค.
- ๋ชจ๋ ํ์ด์ง๋ ๊ฒ์์ด ๊ฐ๋ฅํ์ฌ์ผ ํฉ๋๋ค.(SEO)
- ๋ชจ๋ Form์ ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ๋์ด์ผ ํฉ๋๋ค.๐ฅ
- ๋ฐฑ์๋๋
strapi
๋ฅผ ์ฌ์ฉํด์ ํ๊ฒฝ์ ์ค์ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
- ๋ก์ปฌ์์๋ง ๋์ํด๋ ๊ด์ฐฎ์ต๋๋ค.
์ฑ๋ฆฐ์ง
- AWS๋ฅผ ์ด์ฉํด์ ๋ฐฐํฌํด์ฃผ์ธ์.
(Azure๋ GCP๋ฅผ ์ด์ฉํด๋ ๋ฉ๋๋ค.)
- ํ ํ๋ก์ ํธ๋ก ํด๋ณด์ธ์.๐ฅ
- ์ด์ ๋ชจ๋(์ ์ง๋ณด์ ์ ์ฑ
)์ ๊ณ ๋ฏผํด์ฃผ์ธ์
- Admin์ ๋ง๋ค์ด๋ณด๋ฉด ์ด๋จ๊น์?(=== ๋ฐฑ์คํผ์ค)
- CS๋ฅผ ๋ฐ์ ์ฐฝ๊ตฌ๋ฅผ ๋ง๋ จํด์ฃผ์ธ์.
- GitHub ๋ฐฐํฌ ์ ๋ต์ ์ก์์ฃผ์ธ์.
- GitHub Actions๋ฅผ ํ์ฉํด CI / CD๋ฅผ ๊ตฌ์ถํด์ฃผ์ธ์.
- ESLint ๋ฑ๊ณผ ๊ด๋ จ๋ ๋ด์ฉ์ ์ถ๊ฐํด์ฃผ์ธ์.๐ฅ
- ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ๋ก ์ง์ฃผ์ธ์.
- Jest๋ฅผ ์ด์ฉํด ํ
์คํธ๋ฅผ ๊ตฌ์ถํด์ฃผ์ธ์.
๋ง๋ถ์ด๊ธฐ
- ์กฐ์๋ ์คํฐ๋์ ๋ง์ง๋ง ๊ณผ์ ... ์
๋๋ค. ํคํค
- ํ๋ก์ ํธ๋ฅผ ์์ํ์ผ๋ ๊ทธ ๊ณผ์ ์ ์ ํ ์์ฑํ์ง ์๊ณ ์์์ต๋๋ค.
โ ๊ทธ.. ๋๋ฆ์ ํ๊ณ๋ฅผ ๋งํ์๋ฉด.. ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๋ถ์กฑํจ์ ๋๊ปด ๊ณต๋ถ๋ฅผ ํ๊ณ ์ถ์์ผ๋ ์ฌ์ ๋กญ๊ฒ ๊ณต๋ถํ ์ ์์๊ณ (์๋๋ฉด ์ค๋๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ), ๋์ ๋ถ์กฑํจ์ด ์๊พธ ๋๊ปด์ ธ์ ๋ถ์ํ๊ณ ์กฐ๊ธํ๋ค.
โ ๊ทธ๋์ ๋ฏธ๋ฃฐ ์ ์๋ ๊ฒ์ ๋ชจ๋ ๋ฏธ๋ค๋ฒ๋ฆฌ๊ธฐ๋ฅผ ์์ ํ๊ณ ๋ฏธ๋ฃฐ ์ ์๋ ๊ฒ ์ค์ ๋ธ๋ก๊ทธ ๊ธ ์์ฑ์ด ํฌํจ๋์ด ์์๋ค.
- ๋ฆ๊ฒ๋๋ง ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๋ค๋ฃจ๊ณ ์ถ์๋ ์ฃผ์ ๋ค์ ๋ํด ๊ธ์ ์์ฑํ๋ ค๊ณ ํฉ๋๋ค.
- ์์ ๋ด์ฉ์ ์ด ์ ์ ์์์ ์ฅ ํด๋์์ง ๊ฝค ์ค๋๋์์ต๋๋ค.
- ๋ด์ฉ์ ๋ ์ถ๊ฐํด์ ๊ธ์ ์ฌ๋ฆฌ๊ณ ์ถ์๋๋ฐ.. ๋ง์์ฒ๋ผ ์์ฑ์ด ์ด๋ ต๊ธธ๋ ์ผ๋จ ์ฌ๋ฆฌ๊ณ ๋์ค์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค..?!
- ๊ทธ ๋์ ๋ง์ ํ์ด์ง๋ฅผ ๋ง๋ ๊ฑด ์๋์ง๋ง ์ฐจ๊ทผ์ฐจ๊ทผ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์์๊ณ , ๋๋ฉํ์ด์ง๋ฅผ ์์ฑํ๋ฉด ๋ฐฐํฌ ํ ๊ฐ๋ฐ์ ์งํํ๊ธฐ๋ก ํ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ฐฐํฌ๊ฐ ๋ ์ํ์ง๋ง ๋น์ด์๋ ํ์ด์ง๊ฐ ๋ง์ต๋๋ค.
- ๋งํฌ์ ์ ์ํด์ ์์ ์ฌํญ์ด ๋ณด์ธ๋ค๋ฉด ์๋ ค์ฃผ์ธ์!