- ๋ ์จ์ ๋ฐ๋ผ ๋ค์ํ ํ ๋ง๋ฅผ ๊ฐ์ง ์ต๋ช ๋ฌธ๋ต ์๋น์ค
- ๊ธฐํ ๊ธฐ๊ฐ : 24.04.19 ~ 24.04.29
- ๊ฐ๋ฐ ๊ธฐ๊ฐ : 24.04.30 ~ 24.06.07
- ๋ฐฐํฌ : ๋ฐฐํฌ๋งํฌ
์ด ์ ์ฅ์๋ ํ ํ๋ก์ ํธ์ ๊ฐ์ธ ํฌํฌ๋ก, ํฌํธํด๋ฆฌ์ค/๋ฐ๋ชจ ๋ชฉ์ ์ ๋๋ค.
- ๊ธฐ์กด ๊ณผ์ ํ๋ก์ ํธ ์คํ๋ง์ธ๋์ ๊ฐ์ ์ ์ฌ์ง๊ฐ ๋ณด์ด๋ ๊ธฐ๋ฅ์ ๋ฐ์ ์ํค๊ณ ์ ํจ
1. ์ง๋ฌธ ์ ๋๋ค์๋ง์ ๋ณผ ์ ์๋ค๋ ๋ถํธํ ์ ๊ทผ์ฑ ํฅ์
2. ํธ๋๋ํ์ง ์์ ๋์์ธ๊ณผ ๋จ์ํ ๊ธฐ๋ฅ์ ๊ฐ์
3. ๋ณด์ ๊ธฐ๋ฅ์ ๋ถ์ฌ ํด๊ฒฐ
4. ๊ธฐ์กด์ ์ฌ์ฉํด๋ณด์ง ๋ชปํ ์๋ก์ด ๊ธฐ๋ฅ์ ๋์
- ๋๋ค์ ์ฐ๋ ๊ณณ์ ์ง๋ฌธ์ ์ฐ๊ณ , ์งง๊ณ ๋น ๋ฅด๊ฒ ์ฌ์ฉํ ์ ์๋ ์ฌ์ดํธ๋ฅผ ๋ง๋ค์.
1. ์ง๋ฌธ์์ ๋๋ค์๊ณผ ์ง๋ฌธ์ ํจ๊ป ๋ณผ ์ ์๋๋ก ์์
2. ๊ท์ฌ์ด ๋ก๊ณ ์ ์ง๊ด์ ์ด๊ณ ๊น๋ํ ๋์์ธ์ผ๋ก ์์
3. ์ง๋ฌธ์์ ๋ต๋ณ์ ๋๋ค์๊ณผ ๋น๋ฐ๋ฒํธ ์ค์
4. ๊ธฐ์์ฒญ api๋ฅผ ํ์ฉํ ํ
๋ง ์๋ ๋ณ๋
- useGeolocation ์ปค์คํ ํ ๊ตฌํ: ์ฌ์ฉ์ ์์น ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ ๊ฐ๋ฐ
- ๊ธฐ์์ฒญ API ์ฐ๋: ์ค์๊ฐ ๋ ์จ ๋ฐ์ดํฐ fetching ๋ฐ ์๋ฌ ํธ๋ค๋ง
- ํ ๋ง ์๋ ์ ํ ๋ก์ง: ๋ ์จ ๋ฐ์ดํฐ์ ๋ฐ๋ฅธ ๋์ UI ํ ๋ง ๋ณ๊ฒฝ ์์คํ ๊ตฌ์ถ
- React Query ์ํคํ ์ฒ ์ค๊ณ: ์๋ฒ ์ํ ๊ด๋ฆฌ ๋ฐ ์บ์ฑ ์ ๋ต ์๋ฆฝ
- ํ์ด์ง๋ค์ด์
์์คํ
:
onPageChange์ฝ๋ฐฑ ๊ธฐ๋ฐ ํ์ด์ง๋ค์ด์ ์ปดํฌ๋ํธ ๊ตฌํ - API ์ฐ๋ ์ต์ ํ: Card List ๋ฐ์ดํฐ ํ์นญ ๊ตฌ์กฐ ์ค๊ณ ๋ฐ ๋ฆฌํฉํ ๋ง
- React Hook Form ํตํฉ: ํผ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ์๋ฌ ํธ๋ค๋ง ๊ตฌํ
- Modal ์ปดํฌ๋ํธ ๊ฐ๋ฐ: ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ฌ UI ์์คํ ๊ตฌ์ถ
- ์ฌ์ฉ์ ์ ๋ ฅ ๊ฒ์ฆ: ์ค์๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ํผ๋๋ฐฑ ์ ๊ณต
- ํ๊ทธ/์ํ ํํฐ ์์คํ : ๋ฏธ๋ต๋ณ, ๋ถ์ผ๋ณ ํํฐ๋ง ๋ก์ง ๊ตฌํ
- URL ์ฟผ๋ฆฌ ๋๊ธฐํ: ํํฐ ์ํ์ URL ํ๋ผ๋ฏธํฐ ์๋ฐฉํฅ ๋๊ธฐํ
- ๊ฒ์ ๊ฒฐ๊ณผ ์ต์ ํ: ํํฐ๋ง ์กฐ๊ฑด์ ๋ฐ๋ฅธ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ํ์
- ๋ก๋ฉ ์ํ ๊ด๋ฆฌ: Skeleton UI๋ฅผ ํ์ฉํ ๋ก๋ฉ ์ธ๋์ผ์ดํฐ ๊ตฌํ
- ์๋ฌ ํธ๋ค๋ง: ์ฌ์ฉ์ ์นํ์ ์ธ ์๋ฌ ๋ฉ์์ง ๋ฐ fallback UI
- ์ ๊ทผ์ฑ ๊ฐ์ : ํค๋ณด๋ ๋ค๋น๊ฒ์ด์ ์ง์ ๋ฐ ์๋งจํฑ ๋งํฌ์
- ์ด๋ฏธ์ง ์ต์ ํ: Next.js Image ์ปดํฌ๋ํธ๋ฅผ ํ์ฉํ ์ฑ๋ฅ ํฅ์
๐ ์ฃผ์ ๊ธฐ์ ์คํ: TypeScript, Next.js, React Query, React Hook Form, Geolocation API, ๊ธฐ์์ฒญ API
- ์ง๋ฌธ ๋ฑ๋ก : ๋ฉ์ธ ํ์ด์ง์์ ๋ฐ๋ก ์ง๋ฌธ์ ๋ฑ๋กํ ์ ์๋ค.
- ๋ฑ๋ก ์กฐ๊ฑด ๋ถํฉ : ์ง๋ฌธ์ ๋ฑ๋กํ ๋ ํ์ ๊ฐ์ ์ ๋ ฅํ์ง ์๊ฑฐ๋ ์กฐ๊ฑด์ ๋ง์ง ์๋ ๊ฐ์ ์ ๋ ฅํ๋ฉด ๋ฑ๋กํ ์ ์๋ค.
- ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์ ์ฅ : ์ง๋ฌธ์ด ๋ฑ๋ก๋๋ฉด ์ ๋ ฅํ ๋๋ค์๊ณผ ๋น๋ฐ๋ฒํธ๊ฐ ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋๋ค.
- ๋ฆฌ์ก์ ์์ ๋ฐ๋ฅธ ์ธ๊ธฐ ์ง๋ฌธ : ๋ฆฌ์ก์ ์๊ฐ ๋ง์ ์์ผ๋ก ์ธ๊ธฐ ์ง๋ฌธ์ ๋ํ๋๋ค.
- ์ฌ๋ผ์ด๋ ๊ธฐ๋ฅ : ์ธ๊ธฐ ์ง๋ฌธ์๋ ์ด 6๊ฐ๊ฐ ๋ํ๋๊ณ ๋๋๊ทธ๋ฅผ ํ๊ฑฐ๋ ํ์ดํ ๋ฒํผ์ ํด๋ฆญํ์ฌ ์์ผ๋ก ๋๊ธธ ์ ์๋ค.
- ๋ฏธ๋ต๋ณ ํํฐ๋ง ๊ธฐ๋ฅ : ๋ฏธ๋ต๋ณ ๋ฒํผ์ ์ฒดํฌํ๋ฉด ๋ต๋ณ์ด ๋ฌ๋ฆฌ์ง ์์ ์ง๋ฌธ๋ค๋ง ๋์ค๊ฒ ๋๋ค.
- ๋ถ์ผ ๋ณ๋ก ํํฐ๋ง ๊ธฐ๋ฅ : ์ ์ฒด, ์ฐ์ ๋ฑ๋ฑ ์ํ๋ ๋ถ์ผ๋ฅผ ๋๋ฅด๋ฉด ํด๋น ๋ถ์ผ์ ์ง๋ฌธ๋ง ๋์จ๋ค.
- ํ์ด์ง๋ค์ด์ ๊ธฐ๋ฅ : ๋ค์, ์ด์ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ค์ ํ์ด์ง๋ก ๋์ด๊ฐ๊ณ ์ซ์๋ฅผ ํด๋ฆญํ๋ฉด ํด๋น ํ์ด์ง์ ์ง๋ฌธ๋ค์ด ๋์จ๋ค.
- ๋ฐฐํฌ: https://quick-question-weather.vercel.app/
- ํ ๋ ํฌ์งํ ๋ฆฌ: https://github.com/Important-is-Great-Youths/QuickQuestion
๐ Note: ๋ณธ ๊ฐ์ธ ํฌํฌ๋ ํฌํธํด๋ฆฌ์ค/๋ฐ๋ชจ ๋ชฉ์ ์ ๋๋ค.


