์ฑ ๊ณผ ๊ด๋ จ๋ ์ฃผ์ ๋ก ์์ ๋กญ๊ฒ ์ด์ผ๊ธฐ๋ฅผ ๋๋๋ ๊ณณ, ์ง์ฑ์ธ์ ์๋น์ค ์ค์ ๋๋ค.
โ์ง์์ ์ผ๋ก ์ ์ง ๋ณด์ ๋ฐ ์ฑ๋ฅ ๊ฐ์ ์์ ์ ์งํ ์ค์ ๋๋ค.
https://jisungin.co.kr
- ๐ ํ๋ก์ ํธ ๊ฐ์
- ๐ ํ๋ก์ ํธ ๊ธฐ๊ฐ
- โจ ์๋น์ค ์๊ฐ
- ๐จโ๐ป ๊ธฐ์ ์คํ
- ๐ป ์ ๋ฌด ๋ถ๋ฐฐ
- โ๏ธ ์ฃผ์ ๊ธฐ๋ฅ & ๊ธฐ์ & ๋ก์ง
์ฑ
๊ณผ ๊ด๋ จ๋ ์ฃผ์ ๋ก ์์ ๋กญ๊ฒ ์ด์ผ๊ธฐ๋ฅผ ๋๋๋ ๊ณณ์ ์ฃผ์ ๋ก ํ์ฌ ํ๋ก์ ํธ๋ฅผ ์์ํ์์ต๋๋ค.
ํ๋ก์ ํธ์ ๊ฐ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ํ๋ ๋์๋ฅผ ํ ํฌ๋ฐฉ์ ํตํด ์ฌ๋๋ค๊ณผ ํ ๋ก ์ ์งํํ ์ ์์ต๋๋ค.
- ํ ํฌ๋ฐฉ์ ์
์ฅํ๋๋ฐ ๊ฐ๋จํ ์ ์ฝ ์กฐ๊ฑด์ด ์์ ์ ์์ต๋๋ค.
- ex) ์ฑ ์ ์ฝ๊ณ ์๋ ์ฌ๋ ๋๋ ์ฝ์ ์ฌ๋
- ์ฑ ์ ๋ํ ํ๊ฐ, ๋ณ์ ๋ถ์ฌ, ์ฝ์ ์ํ ๊ธฐ๋ก, ์๊ฒฌ ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค
2024๋ 3์ ~ 2024๋ 6์ 17์ผ
โญ์ ์ง ๋ณด์ ๋ฐ ์ฑ๋ฅ ๊ฐ์ : 2024๋ 6์ 17์ผ ~ ์งํ ์ค
โ์ง์์ ์ผ๋ก ์ ์ง ๋ณด์ ๋ฐ ์ฑ๋ฅ ๊ฐ์ ์์ ์ ์งํ์ค์ ๋๋ค.
์ง์ฑ์ธ ์๋น์ค์์๋ ์ฑ ๊ณผ ๊ด๋ จ๋ ์ฃผ์ ๋ก ์์ ๋กญ๊ฒ ์ด์ผ๊ธฐ๋ฅผ ๋๋ ์ ์์ต๋๋ค.
์๋๋ ๊ฐ ํ์ด์ง์ ๋ํ ์ค๋ช ์ ๋๋ค.
์ง์ฑ์ธ ๋ฉ์ธ ํ๋ฉด์์๋ ์ค์๊ฐ, ์ธ๊ธฐ์๋ ํ ํฌ๋ฐฉ์ ํ์ธ ํ ์ ์์ต๋๋ค.
์์ ์ ์ฒด๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ๋ฉด ๊ฐ ์ ๋ชฉ์ ๋ง๋(์ต๊ทผ์, ์ธ๊ธฐ์) ํํฐ๋ก ์ ์ฉ๋์ด ๊ด๋ จ๋ ํ ํฌ๋ฐฉ ๋ชฉ๋ก์ ํ์ธ ํ ์ ์์ต๋๋ค.
๋ํ ์ค์๊ฐ ๋ฒ ์คํธ ์ ๋ฌ์ ํ ํฌ๋ฐฉ์ด ๋ง์ ์ฑ ๋ชฉ๋ก์ ํ์ธ ํ ์ ์์ต๋๋ค.
ํ ํฌ๋ฐฉ์ ์ฌ์ฉ์๊ฐ ์์ฑํ ๊ฒ์๋ฌผ ์ ๋๋ค.
์ ํฌ๋ ์ด๊ฒ์ ํ ํฌ๋ฐฉ ์นด๋ ๋๋ ์นด๋๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ฌ์ฉ์๊ฐ ์ฑ ๊ณผ ๊ด๋ จ๋ ์ฃผ์ ๋ก ์์ ๋กญ๊ฒ ์ด์ผ๊ธฐ๋ฅผ ๋๋ ์ ์๊ฒ ํ๋ ์๋จ์ด๋ฉฐ, ๋น ๋ก๊ทธ์ธ ์์๋ ํด๋น ํ ํฌ๋ฐฉ์ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด ์นด๋์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ ์ ๋ํ ์ ๋ณด์ ์์ฑ์์ ๊ธ์ ์ ๋ชฉ๊ณผ ๋ด์ฉ์ ๋ณผ ์ ์์ต๋๋ค.
๋ํ ์ฌ์ฉ์๋ ํ ํฌ๋ฐฉ์ ์ข์์๋ฅผ ๋๋ฅผ ์ ์๊ณ , ๋ช ๋ช ์ ์ฌ๋๋ค์ด ์ข์์๋ฅผ ๋๋ ๋์ง ์ ์ ์์ต๋๋ค.
์ง์ฑ์ธ์ ํต์ฌ์ธ ํ ํฌ๋ฐฉ์ ๋ค์ด๊ฐ์ ๋์ ๋ชจ์ต์ ๋๋ค.
ํ ํฌ๋ฐฉ ์นด๋์ ๋ค๋ฅด๊ฒ ์ธ์ ์์ฑํ๋์ง๋ฅผ ์ถ๊ฐ๋ก ์ ์ ์์ผ๋ฉฐ, ํต์ฌ ๊ธฐ๋ฅ์ค ํ๋ ์ธ ์ฐธ๊ฐ ์กฐ๊ฑด์ ์ ์ ์์ต๋๋ค.
์ฐธ๊ฐ ์กฐ๊ฑด์ ์ฝ๊ณ ์ถ์, ์ฝ์, ์ฝ๋ ์ค, ์ค๋จ, ์ ์ ๋ฉ์ถค ์ด 5๊ฐ์ง๋ก ๋ถ๋ฅ ๋๋ฉฐ ์ฐธ๊ฐ ์กฐ๊ฑด์ ๋ง๋ ๊ฒฝ์ฐ ์๊ฒฌ์ ์์ฑ ํ ์ ์์ต๋๋ค.
๋ง์ฝ ์ฐธ๊ฐ ์กฐ๊ฑด์ ๋ง์ง ์๊ฑฐ๋, ๋ก๊ทธ์ธ์ ํ์ง ์์ ์ํ์์๋ ํด๋น ๊ธฐ๋ฅ์ ์ด์ฉํ์ค ์ ์์ต๋๋ค.
์๊ฒฌ์ ์์ฑํ๊ฒ ๋๋ฉด ์๋์ ๋งํ์ ํํ๋ก ๋ฑ๋ก์ด ๋ฉ๋๋ค.
์ง์ฑ์ธ์ ํต์ฌ์ธ ๋ชจ๋ ํ ํฌ๋ฐฉ์ ๋ณผ ์ ์๋ ๊ณณ์ ๋๋ค.
ํ ํฌ๋ฐฉ ์นด๋๋ ์์ ํํฐ์ ๋ง๊ฒ ์กฐํ๋ฅผ ํ ์ ์์ผ๋ฉฐ ํฌ๊ฒ ์ธ ๊ฐ์ง ํํฐ์ ์ํฅ์ ๋ฐ์ต๋๋ค.
๋ฉ์ธ ํ์ด์ง์์ ๋ดค๋ ์ต์ ์, ์ธ๊ธฐ์์ด ์์ผ๋ฉฐ ์ธ๊ธฐ์์ ๋๋ ์ ๋๋ ๋ ์ง๋ณ ํํฐ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
๋ ์ง๋ณ ํํฐ๋ฅผ ์ด์ฉํด 1์ผ ์ , 7์ผ ์ , ํ๋ฌ ์ ์ ์์ฑ๋ ๊ฒ์๋ฌผ๋ค์ ํํฐ๋งํ์ฌ ๋ณผ ์ ์์ต๋๋ค.
๊ฒ์์ฐฝ์ ์ด์ฉํ์ฌ ์ฐพ๊ณ ์ ํ๋ ํ ํฌ๋ฐฉ ์ ๋ชฉ์ ๊ฒ์ํ์ฌ ํ ํฌ๋ฐฉ์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ฌดํ ์คํฌ๋กค๋ก ๊ตฌํ๋์ด ์์ด ํน์ ์์ ์์ ์๋ก์ด ํ๊ฐ๋ค์ด ๋ถ๋ฌ์์ง๋๋ค.
์ฑ ์ ๋ํ ์ ๋ณด ๋ฐ ์ฑ ์ ๋ํ ํ๊ฐ, ์ฐ๊ด๋ ํ ํฌ๋ฐฉ์ ๋ณผ ์ ์๋ ํ์ด์ง ์ ๋๋ค.
๋ก๊ทธ์ธ ์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ์ด์ฉ ํ ์ ์์ต๋๋ค.
- ๋ณ์ : ์๋จ์ ์ฑ
์ ๋ํ ๋ณ์ ์ ๋จ๊ธธ ์ ์์ต๋๋ค. ๋ณ์ ์ 0.5์ ๋จ์๋ก ๋ถ์ฌ๋๋ฉฐ, ๋ณ์ด ๋ฐ ๊ฐ์ฉ ์ฑ์์ง๋๋ค.
๋ณ์ ์ ์์ ํ๊ณ ์ถ๋ค๋ฉด ์ํ๋ ์ ์์ ๋ณ์ ํด๋ฆญํ๋ฉด ๋ฉ๋๋ค. ๋ณ์ ์ ์ทจ์ํ๊ณ ์ถ๋ค๋ฉด, ์ ์ ๋ถ์ฌํ ๋ณ์ ์ ๋ณ์ ์ ํด๋ฆญํ๋ฉด ์ทจ์ ๋ฉ๋๋ค.
๋ณ์ ์ ํ์ค ํ์ ๋จ๊ธธ ๊ฒฝ์ฐ ๊ฐ์ด ๊ธฐ๋ก๋ฉ๋๋ค. - ๋
์ ์ํ : ์ค๋ฅธ์ชฝ ์๋จ์ ํด๋น ์ฑ
์ ๊ดํ์ฌ ๋
์ ์ํ๋ฅผ ๊ธฐ๋ก ํ ์ ์์ต๋๋ค. ๋
์ ์ํ๋ ํ ํฌ๋ฐฉ์ ์ฐธ์ฌ ํ ์ ์๋ ์กฐ๊ฑด์ ํด๋น ๋ฉ๋๋ค.
- ์ฝ๊ณ ์ถ์
- ์ฝ์
- ์ฝ๋ ์ค
- ์ค๋จ
- ์ ์ ๋ฉ์ถค
- ํ์ค ํ : ์ฑ ์ ๋ํ ํ์ค ํ์ ๋จ๊ธธ ์ ์์ต๋๋ค. ํ์ค ํ์ ์ ์ ๋ค์ ํ๊ฐ์ ๊ธฐ๋ก๋ฉ๋๋ค.
์ ์ ๋ค์ ํ๊ฐ๋ ํ์ค ํ์ ์์ฑํ ์ ์ ๋ค์ ๊ธฐ๋ก์ด ๋ชจ์ธ ๊ณณ ์ ๋๋ค. ๋๋ณด๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ํด๋น ์ฑ ์ ๊ดํ ๋ชจ๋ ์ ์ ๋ค์ ํ๊ฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ฐ๊ด๋ ํ ํฌ๋ฐฉ์ ์ฑ ๊ณผ ๊ด๋ จ๋ ํ ํฌ๋ฐฉ์ ๋ณด์ฌ์ค๋๋ค. ๋๋ณด๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ์ฐ๊ด๋ ํ ํฌ๋ฐฉ ํ์ด์ง๋ก ์ด๋๋ฉ๋๋ค.
์ฑ ์์ธ๋ณด๊ธฐ ํ์ด์ง์์ ์ ์ ๋ค์ ํ๊ฐ ๋๋ณด๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ์ ๊ทผ ํ ์ ์๋ ํ์ด์ง ์ ๋๋ค.
์ฑ ๊ณผ ๊ด๋ จ๋ ํ๊ฐ๋ง์ ๋ณด์ฌ์ค๋๋ค.
๋ฌดํ ์คํฌ๋กค๋ก ๊ตฌํ๋์ด ์์ด ํน์ ์์ ์์ ์๋ก์ด ํ๊ฐ๋ค์ด ๋ถ๋ฌ์์ง๋๋ค.
ํํฐ๊ฐ ์ ์ฉ๋์ด ์์ด ํํฐ์ ๋ฐ๋ผ ํ๊ฐ๋ฅผ ์ ๋ ฌํ ์ ์์ต๋๋ค.
- ์ข์์ ์
- ๋์ ํ๊ฐ ์
- ๋ฎ์ ํ๊ฐ ์
- ์์ฑ ์
์ฑ ์์ธ๋ณด๊ธฐ ํ์ด์ง์์ ์ฐ๊ด๋ ํ ํฌ๋ฐฉ ๋๋ณด๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ์ ๊ทผ ํ ์ ์๋ ํ์ด์ง ์ ๋๋ค.
์ฑ ๊ณผ ๊ด๋ จ๋ ํ ํฌ๋ฐฉ๋ง์ ๋ณด์ฌ์ค๋๋ค.
- ํ๋ ์์ํฌ : Next.js 14
- ์ธ์ด : Typescript
- ์ํ ๊ด๋ฆฌ : React-query, Redux
- API : axios
- CSS : Tailwind CSS
- ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ : Story book, MSW, Faker.js, Swiper
- ๋ฐฐํฌ : Vercel (๋๋ฉ์ธ๊ณผ ์ฐ๋ํ์ฌ ๋ฐฐํฌ)
- ์ด์ ๊ด๋ฆฌ : Github Issue
- ์ปค๋ฎค๋์ผ์ด์ : Slack, Discord
๋ณ์นํ | ์ ์คํ |
---|---|
@SeungHun6450 | @jungjunhyung99 |
1. ๋ฉ์ธ ํ์ด์ง ์ธ๊ธฐ์๋ ํ ํฌ๋ฐฉ, ๋ฒ ์คํธ ์ ๋ฌ, ์ต๊ทผ ์์ฑ๋ ํ ํฌ๋ฐฉ, ํ ํฌ ๋ง์ ์ฑ ์นดํ ๊ณ ๋ฆฌ ๊ตฌํ 1. ๊ฐ ํ ํฌ๋ฐฉ ์์ ์ ์ฒด๋ณด๊ธฐ ํด๋ฆญ ์, ์กฐ๊ฑด์ ๋ง๊ฒ ํํฐ๋งํ์ฌ ํ ํฌํด์ ํ์ด์ง๋ก ์ด๋ 2. ์ฑ ํ์ง ํด๋ฆญ ์, ์ฑ ์์ธ๋ณด๊ธฐ ํ์ด์ง๋ก ์ด๋ 3. ํ ํฌ๋ฐฉ ํด๋ฆญ ์, ํ ํฌ๋ฐฉ ์์ธ๋ณด๊ธฐ ํ์ด์ง๋ก ์ด๋ 2. ํ ํฌ๋ฐฉ ๋ฉ์ธ ํ์ด์ง, ํ ํฌํด์ ํ์ด์ง, ์ฐ๊ด๋ ํ ํฌ๋ฐฉ ํ์ด์ง์์ ๋ณด์ด๋ ํ ํฌ๋ฐฉ(ํ ํฌ๋ฐฉ ์นด๋)์ ์ 3. ํ ํฌ๋ฐฉ ์์ธ๋ณด๊ธฐ ํ ํฌ๋ฐฉ์ ๋๋ ์ ๋, ํด๋น ํ์ด์ง๋ก ์ด๋ ์ฐธ๊ฐ์กฐ๊ฑด์ ๋ถํฉํ๋ฉด ์๊ฒฌ์ ์์ฑ ๊ฐ๋ฅ 4. ํ ํฌํด์ 1. ์ต์ ์, ์ธ๊ธฐ์, ๋ ์ง๋ณ ์ด 3๊ฐ์ ํํฐ๋ฅผ ๊ฐ์ง ์ฌ์ฉ์๋ค์ด ์์ฑํ ํ ํฌ๋ฐฉ์ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง 2. ์ ๋ชฉ์ ๊ฒ์ํ์ฌ ์ํ๋ ํ ํฌ๋ฐฉ์ ์ฐพ๊ธฐ 5. ์ฑ ์์ธ ๋ณด๊ธฐ 1. ์ฑ ์ ๋ํ ์ ๋ณด๋ฅผ ํ์ธ 2. ์ฑ ์ ๋ํ ๋ณ์ ์ ๋จ๊ธฐ๊ธฐ 3. ๋ ์ ์ํ ๊ธฐ๋ก, ์ด๋ ํ ํฌ๋ฐฉ์ ์ฐธ๊ฐ์กฐ๊ฑด์ ํด๋น 4. ์ฑ ์ ๋ํ ํ์ค ํ ์์ฑ 5. ์ ์ ๋ค์ ํ๊ฐ๋ฅผ ํ์ธ ๊ฐ๋ฅ 6. ์ฐ๊ด๋ ํ ํฌ๋ฐฉ ํ์ธ ๊ฐ๋ฅ 6. ์ ์ ๋ค์ ํ๊ฐ 1. ์ ํํ ์ฑ ์ ์ ์ ๋ค์ ํ์ค ํ์ ํ์ธ 2. ์ข์์, ํ์ , ์ต์ ์์ผ๋ก ํํฐ๋ง ๊ฐ๋ฅ 7. ์ฐ๊ด๋ ํ ํฌ๋ฐฉ ์ ํํ ์ฑ ์ ์ฃผ์ ๋ก ํ ํ ํฌ๋ฐฉ๋ค์ ํ์ธ ๊ฐ๋ฅ |
1. ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํ OAuth๋ฅผ ํตํด Kakao ๊ณ์ ์ ํตํ ๋ก๊ทธ์ธ ๊ตฌํ 2. ๋์ ๊ฒ์ ํ์ด์ง Kakao REST API๋ฅผ ์ฐ๋ํ์ฌ ๋์ ์กฐํ ํ์ด์ง ์ ์ 3. ์ ์ ๊ถํ ๊ด๋ฆฌ middleware๋ฅผ ์ถ๊ฐํ์ฌ ์ ์ ๋ณ ๊ถํ๊ด๋ฆฌ (ํ ํฐ์ด ์์ ์์ ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก redirect) 4. ๋ง์ดํ์ด์ง ๊ตฌํ ์ ์ ๋ณ ๊ด๋ จ ํ ํฌ๋ฐฉ, ๋์ ๋ฑ์ ํ๋์ ๋ณผ ์ ์๋ ํ์ด์ง ์ ์ 5. ํ ํฌ๋ฃธ/์๊ฒฌ ์์ฑ ํ์ด์ง ์ ์ ๊ธ๊ณผ ์ฌ์ง์ ์ฒจ๋ถํ์ฌ ํ ํฌ๋ฃธ ๋ฐ ์๊ฒฌ์ ์์ฑํ ์ ์๋ ํ์ด์ง ์ ์ 6. ํต์ฌ ๊ณตํต ์ปดํฌ๋ํธ ๋ฐ ์คํ ๋ฆฌ ์์ฑ (1) variants๋ฅผ ์ด์ฉํ ์ฌ์ฌ์ฉ์ฑ์ด ๋์ ๊ณตํต ์ปดํฌ๋ํธ ์์ฑ(๋ฒํผ, input, textarea ๋ฑ) (2) ์คํ ๋ฆฌ๋ฅผ ์์ฑํ์ฌ ์ปดํฌ๋ํธ ํ ์คํธ ์์ |
- ๊ฒ์ ๊ธฐ๋ฅ
- ํ ํฌํด์ ํ์ด์ง์์ ๊ฒ์ ๊ธฐ๋ฅ ์ด์ฉ ์, ๊ฒ์ํ ๋ด์ฉ๊ณผ ํ ํฌ๋ฐฉ์ ์ ๋ชฉ์ ๋น๊ตํ์ฌ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ํํฐ ๊ธฐ๋ฅ
- ์ต์ ์, ์ธ๊ธฐ์ ๋ฑ์ ํํฐ ์ ์ฉ ์,
router.push
๋ฅผ ์ด์ฉํ์ฌ ํ์ด์ง๋ฅผ ๋ณ๊ฒฝ ํ์ต๋๋ค.
- ์ต์ ์, ์ธ๊ธฐ์ ๋ฑ์ ํํฐ ์ ์ฉ ์,
- ์ข์์ ๊ธฐ๋ฅ
- ํ ํฌ๋ฐฉ, ํ ํฌ๋ฐฉ์ ์๊ฒฌ, ํ์ค ํ ์ด ์ธ ๊ณณ์ ํด๋น ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
- ์์ ์ด ์์ฑํ ํ ํฌ๋ฐฉ, ์๊ฒฌ, ํ์ค ํ์๋ ์ข์์๋ฅผ ๋๋ฅผ ์ ์์ต๋๋ค.
- ์ฑ
๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ
- ๋ณ์ ๋ถ์ฌ ๊ธฐ๋ฅ : ์ฑ ์ ๋ํ ๋ณ์ ์ ๋ถ์ฌ ํ ์ ์์ต๋๋ค. 0.5์ ๋จ์๋ก ๋ณ์ด ๋ฐ ๊ฐ์ฉ ์ฑ์์ง๋๋ค.
- ๋ ์ ์ํ ์ค์ ๊ธฐ๋ฅ : ์ฑ ์ ๋ํ ๋ ์ ์ํ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ํ ํฌ๋ฐฉ์ ์๊ฒฌ ์์ฑ์ ํ์ํ ์ํ์ ๋๋ค.
- ํ ์คํ ์์ฑ ๊ธฐ๋ฅ : ์ฑ ์ ๋ํ ํ ์คํ์ ์์ฑ ํ ์ ์์ต๋๋ค. ์ ์ ๋ค์ ํ๊ฐ์ ๊ธฐ๋ก๋ฉ๋๋ค.
- ๋น ๋ก๊ทธ์ธ ์ ๊ธฐ๋ฅ ์ฐจ๋จ
- ๋ก๊ทธ์ธ ์ ๋ฌด๋ฅผ ํ๋จํ์ฌ ๋น ๋ก๊ทธ์ธ ์์๋ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๊ฒ
Modal ์ปดํฌ๋ํธ
๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์์ต๋๋ค. - ์ข์์ ๊ธฐ๋ฅ, ํ์ค ํ ์์ฑ, ๋ณ์ ๋ถ์ฌ, ๋ ์ ์ํ ๋ฑ์ ๊ธฐ๋ฅ๋ค์ด ์ด์ ํด๋น๋ฉ๋๋ค.
- ํด๋น ๊ธฐ๋ฅ๋ค์ ๋ง๋ ๋ฌธ๊ตฌ๋ฅผ ๋์๋๋ค.
- ๋น ๋ก๊ทธ์ธ ์ํ์์ ํ ํฌ๋ฐฉ ์์ฑ ๋ฐ ์๊ฒฌ ์์ฑ
url
๋ก ์ง์ ์,Modal
์ฐฝ์์ '๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค' ๋ฉ์ธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด์ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋์ํต๋๋ค.
- ๋ก๊ทธ์ธ ์ ๋ฌด๋ฅผ ํ๋จํ์ฌ ๋น ๋ก๊ทธ์ธ ์์๋ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๊ฒ
- Skeleton UI
- Skeleton UI๋ฅผ ๋์ ํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ์ต๋๋ค.
- ๋ก๋ฉ ์ค ๋น ํ๋ฉด์ ํด๋น UI์ ๋น์ทํ ๋ชจ์์ Skeleton UI๋ก ๋์ฒดํ์ฌ ์ฝํ ์ธ ๊ฐ ๋ก๋๋๊ธฐ ์ ๊น์ง ์ฌ์ฉ์์๊ฒ ์๊ฐ์ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
- ํฉ์ฑ ์ปดํฌ๋ํธ
- ํฉ์ฑ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋น์ทํ ์ปดํฌ๋ํธ๋ฅผ ํ๋์ ํฉ์ฑ ์ปดํฌ๋ํธ๋ก ๋ง๋ค์ด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ์ฆ๊ฐ์์ผฐ์ต๋๋ค.
- ๋์ ๋ผ์ฐํ
- Next.js์ ๋์ ๋ผ์ฐํ
๊ธฐ๋ฅ์ ํน์ ํ์ด์ง์ ์ ์ฉํ์ต๋๋ค.
- ํ ํฌ๋ฐฉ ์์ธ ๋ณด๊ธฐ
- ์ฑ ์์ธ ๋ณด๊ธฐ
- ํ ํฌํด์ ๊ฒ์
- ์ฐ๊ด๋ ํ ํฌ๋ฐฉ
- ์ ์ ๋ค์ ํ๊ฐ
- Next.js์ ๋์ ๋ผ์ฐํ
๊ธฐ๋ฅ์ ํน์ ํ์ด์ง์ ์ ์ฉํ์ต๋๋ค.
- ํ์ด์ง๋ค์ด์
๊ณผ ๋ฌดํ์คํฌ๋กค
- ํ ํฌํด์ ํ์ด์ง, ์ฐ๊ด๋ ํ ํฌ๋ฐฉ ํ์ด์ง์ ํ์ด์ง๋ค์ด์ ์ ๊ตฌํํ์ฌ ์ ์ฉํ์ต๋๋ค.
- ์ ์ ๋ค์ ํ๊ฐ ํ์ด์ง์์๋
useInfiniteQuery, IntersectionObserver
๋ฅผ ์ด์ฉํ์ฌ ๋ฌดํ์คํฌ๋กค์ ์ ์ฉํ์ต๋๋ค.
- ์บ๋ฌ์
๊ตฌํ
- Swiper๋ฅผ ์ด์ฉํ์ฌ ์บ๋ฌ์ ์ ๊ตฌํํ์ต๋๋ค.
- ๋ฐ์ํ ๋์์ธ ์ ์ฉ
Tailwind CSS
๋ฅผ ์ด์ฉํ ๋ฐ์ํ ๋์์ธ ์ ์ฉํ์ต๋๋ค.- ํ์ฌ pivot์ด ์งํ๋จ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ UI์ ๋ง์ถฐ ์ฌ ์์ ์ด ๋ ์์ ์ ๋๋ค.
- axios
- ๋ฐ์ดํฐ๋ฅผ ํธ์ถํ ๋
axios
๋ฅผ ์ฌ์ฉํ์ฌ ํธ์ถํ์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ํธ์ถํ ๋
- React-query hook ์ฌ์ฉ
custom hook
์ ์ ์ํ์ฌrefetch, useInfiniteQuery
๋ฑ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํด ๊ตฌํํ์ต๋๋ค.
- Story Book
- Story Book์ ์ด์ฉํ์ฌ ๊ณตํต๋ ๋ฒํผ์ด๋
textarea
๋ฅผ ๊ด๋ฆฌํ์์ต๋๋ค.
- Story Book์ ์ด์ฉํ์ฌ ๊ณตํต๋ ๋ฒํผ์ด๋
- MSW
- ๋ฐฑ์๋ API ๊ฐ๋ฐ์ ์์กด์ ์ธ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์์กด์ฑ์ ํํํ๊ธฐ ์ํด MSW๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
- MSW๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ API ๊ฐ๋ฐ ์ดํ์๋ ์ฝ๋์ ์์ ์์ด, ์๋น์ค ๋ก์ง์ ๊ทธ๋๋ก ์ ์งํ ์ ์์์ต๋๋ค.
- Faker.js
- Faker.js๋ฅผ ์ด์ฉํ์ฌ ์์ ์ด๋ฏธ์ง๋ฅผ ๋ถ์ฌํด MSW์ ํจ๊ป ์ฌ์ฉํ์ต๋๋ค.
- Lazy Loading (Dynamic Import)
- ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํด
next/dynamic
์ ์ด์ฉํ์ฌ Dynamic Import ๊ธฐ๋ฅ์ ํ์ฉํ์ต๋๋ค. - ๋ ๋๋ง์ด ์ฆ๊ฐ ํ์ํ์ง ์์
Modal
๊ณผ ๋ฐ์ดํฐ๊ฐ ์์ ๋ ๋ณด์ฌ์ฃผ๋ ์ปดํฌ๋ํธ๋ฅผ ๋์์ผ๋ก ์ค์ ํ์ต๋๋ค.
- ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํด
- Local font๋ฅผ CDN์ผ๋ก ๋ณ๊ฒฝ
- ๊ธฐ์กด์ Local font๊ฐ ์ ์ง ์์ ์ฉ๋์ ์ฐจ์งํ์ฌ
Lighthouse
์ ์์น์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ์ํฅ์ ์ฃผ์์ต๋๋ค. - ๊ธฐ์กด์ local์ ์ ์ฅ๋์๋ font ํ์ผ์ ์ญ์ ํ ๋ค CDN์ ์ง์ํ๋ font์ ๋ํด์ ์ ์ฉํ์ต๋๋ค.
- ํด๋น ์์ ์ผ๋ก 72%์ ์ฉ๋์ด ๊ฐ์ํ์ฌ ์ฑ๋ฅ์ด ๊ฐ์ ๋์ต๋๋ค.
- ๊ธฐ์กด์ Local font๊ฐ ์ ์ง ์์ ์ฉ๋์ ์ฐจ์งํ์ฌ
- ์ด๋ฏธ์ง ํฌ๋งท์ WebP์์ AVIF๋ก ๋ณ๊ฒฝ
- ๊ธฐ์กด์ WebP์์ AVIF ํฌ๋งท์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ฝ 10%์ ์ฉ๋ ๊ฐ์๋ก ์ฑ๋ฅ์ด ๊ฐ์ ๋์ต๋๋ค.
- Pre-load์ Lazy-load
- ํน์ ์ด๋ฏธ์ง๋ฅผ Pre-loadํ๊ณ ๋์ค์ ๋ณด์ฌ์ง๋ ์ด๋ฏธ์ง๋ฅผ lazy-load๋ฅผ ์ ์ฉ์์ผ ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์ ๋ฐ ์ฑ๋ฅ์ด ๊ฐ์ ๋์ต๋๋ค.
- ๊ณตํต util ํจ์
- ํ ํฌํด์ ํ์ด์ง์ ๊ฒฝ์ฐ, ํด๋น ํํฐ ์กฐ๊ฑด์ ์ฝ๋๊ฐ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ ธ util ํจ์๋ก ๋ถ๋ฆฌ์์ผ ๊ฐ๋ ์ฑ์ ์ฆ๊ฐ์์ผฐ์ต๋๋ค.
- ํ ํฌ๋ฐฉ ์์ธ๋ณด๊ธฐ์์ ๊ฒ์๊ธ๊ณผ ์๊ฒฌ์ ์ธ์ ์์ฑํ๋์ง์ ๊ดํ
timelaps(์ด, ๋ถ, ์, ์ผ, ์, ๋ )
๋ฅผ util ํจ์๋ก ๋ถ๋ฆฌ์์ผ ์ฌ์ฉํ์ต๋๋ค.
- ์ข์์ ๋ก์ง
- ๋ก๊ทธ์ธ์ ํ๋ฉด ์๊ธฐ๊ฐ ์ข์์ํ id๋ค์ ๊ฐ๊ฐ์ ๋ฐฐ์ด๋ก ํ์ธ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ํด๋น ๋๊ธ์ ์ข์์๋ฅผ ๋๋ ๋์ง์ ๋ํด
includes()
๋กboolean
๊ฐ์ ํ๋ณํ ํ ์ ์ฉ์ด ๋๊ฒ ๋ก์ง์ ๊ตฌ์ฑํ์ต๋๋ค.
- ์ฐธ์ฌ ์กฐ๊ฑด ๊ตฌ๋ถ ๋ก์ง
- ํ ํฌ๋ฐฉ์์ ์๊ฒฌ ์์ฑ ์ ์ฐธ์ฌ ์กฐ๊ฑด์ ๋ง๋์ง๋ฅผ ๊ตฌ๋ถํ๋ ๋ก์ง์ ๊ตฌํํ์ต๋๋ค.
- ์ฑ ์ ๊ดํ ๋ฐ์ดํฐ๋ ๋ฐฐ์ด์์ ๊ฐ์ฒด๋ก, ์ธ ๊ฐ์ง ๊ฐ์ด ์์ต๋๋ค. ex) [{id, isbn, status}]
- ๊ฐ์ ์ฑ
์ด๋ฉด์, ์ฑ
์ํ๊ฐ ํ ํฌ๋ฐฉ์ ์ฐธ์ฌ ์กฐ๊ฑด์ ๋ง๋์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด
some()
๊ณผ,includes()
๋ฅผ ์ด์ฉํ์ฌreturn
๊ฐ์boolean
ํํ๋ก ๋ฐํํ์ฌ ์ผ์น ์ฌ๋ถ๋ฅผ ํ์ธํ์ต๋๋ค.
- ๋ณ์ ๋ถ์ฌ ๋ก์ง ๋ณ๊ฒฝ
- ์ฑ ์์ธ ๋ณด๊ธฐ์์ ๋ณ์ ๋ถ์ฌ ์ 0.5์ ๋จ์๋ก ๋ณ ๋ฐ๊ฐ ์ฉ ์ฑ์ฐ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค
- ๋ณ ์ด๋ฏธ์ง ๊ฐ๋ก ๊ธธ์ด 55๋ฅผ ๊ธฐ์ค์ผ๋ก
offsetX
์ ์ฌ์ฉํ์ฌ 27.5๋ณด๋ค ํฌ๋ฉด 1, ์์ผ๋ฉด 0.5๋ฅผ ๋ฐํํ์ฌ ๋ณ์ ๊ณผ ๋ณ์ ์ ๋ง์ถฐ ๋ณ์ด ์ฑ์์ง๋๋ก ๊ตฌํํ์ต๋๋ค. - ์ดํ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์์
offsetX
์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ฅผ ์์ง์ผ ๋๋ง๋ค ์ด๋ฒคํธ๊ฐ ํธ๋ฆฌ๊ฑฐ๋์ดoffsetX
๊ฐ์ ๊ณ์ฐํ๊ณ ์ด์ ๋ฐ๋ฅธ ์ ์๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๋ฏ๋ก ๋ธ๋ผ์ฐ์ ์ ์ด๋ฒคํธ ๋ฃจํ์ ๋ถ๋ด์ ์ค ์ ์์ด ์ฑ๋ฅ์ ๋ฌธ์ ๊ฐ ์์ ์ ์์ด ๊ฐ์ ํ์ต๋๋ค - ๊ธฐ์กด์
offsetX
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์์ ๋ง์ฐ์ค ํด๋ฆญ ์์ญ์ ๋๋์ด ๋ณ์ ์ ์ ๋ฐ ๊ฐ์ ๊ณ์ฐํ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค - ์ง์ ์ ์ผ๋ก ๋ณ์ ๊ฐ์ ๊ฒฐ์ ํ๋ ๋ฐฉ์ ๋ณ๊ฒฝ์ผ๋ก ์ด๋ฒคํธ ์ฌ์ฉ์ ์ต์ํ๋ก ์ธํ ์ฑ๋ฅ์ด ๊ฐ์ ๋์ต๋๋ค.