WorldWise๋ React ๊ธฐ๋ฐ์ ์ฌํ ์ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก, ์ธ๊ณ ์ฌํ์ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ๊ธฐ๋กํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ง๊ด์ ์ธ ์ธํฐํ์ด์ค์ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฒฐํฉํ์ฌ ๋ฐฉ๋ฌธํ ๊ตญ๊ฐ, ๋์ ๋ชฉ๋ก, ์ฌํ ์ ๋ณด ๋ฐ ๋ฉ๋ชจ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์๋ ์ธํฐ๋ํฐ๋ธ ์ธ๊ณ ์ง๋๋ฅผ ์ฌ์ฉํด ์์ ์ ์ฌํ ๊ฒฝ๋ก๋ฅผ ์๊ฐ์ ์ผ๋ก ์ถ์ ํ ์ ์์ต๋๋ค.
- ๋ฐฉ๋ฌธํ ์ฅ์์ ๋ง์ปค๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๋ฏธ๋ ์ฌํ์ง๋ฅผ ๊ณํํ ์ ์์ต๋๋ค.
- ๋ฐฉ๋ฌธํ ๊ตญ๊ฐ ์, ๋์ ๋ชฉ๋ก, ์ฌํ ์ฅ์ ๋ฐ ํน์ ๋์์ ๊ด๋ จ๋ ๋ฉ๋ชจ์ ์ ๋ณด ๋งํฌ๋ฅผ ํ์ํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ฌํ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ ์ ์์ต๋๋ค(์: ๋ ์ง, ๋ชฉ์ ์ง, ์ฌํ ๋ฉ๋ชจ).
- ๋ฐ์คํฌํฑ ๋ฐ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ์ํํ๊ฒ ์๋ํ๋ฉฐ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
feature/v-1.0.0: ์ด ๋ฒ์ ์์๋ ์ฃผ๋ก Context API๋ฅผ ์ฌ์ฉํด ์ํ๋ฅผ ๊ด๋ฆฌํ์ต๋๋ค.feature/v-2.0.0: ์ด ๋ฒ์ ์์๋ ReactQuery/TanStack์ ์ฌ์ฉํด ๋ชจ๋ UI ์ํ๋ฅผ ์๊ฒฉ ์ํ๋ก ์ ํํ์ผ๋ฉฐ, ์ผ๋ถ ๊ธ๋ก๋ฒ UI ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด React Redux Toolkit์ ๋์ ํ์ต๋๋ค.
- ํ๋ก ํธ์๋: [React,Vite,React Leaflet,React Router DOM, Date Picker,React Toast,JavaScript,HTML,CSS ๋ชจ๋]
- ์ง๋ ๋๊ตฌ: [Leaflet.js๋ฅผ ์ฌ์ฉํ ์ธํฐ๋ํฐ๋ธ ์ง๋ ๊ตฌํ]
- ์ํ ๊ด๋ฆฌ: [Context API ๋ฐ Redux/Toolkit๋ฅผ ํ์ฉํด ์ ํ๋ฆฌ์ผ์ด์ ์ํ ๊ด๋ฆฌ]
- ๋ฐ์ดํฐ ์ ์ฅ:
feature/v-1.0.0: [์ง์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ํด ๋ก์ปฌ ์ ์ฅ์ ๋๋ JSON ์๋ฒ ์ฌ์ฉ]feature/v-2.0.0: [MongoDB๋ฅผ ์ฌ์ฉํ์ฌ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ ์ฌ์ฉ]
- ํ๋ธ๋ฆฟ๊ณผ ์ํ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ฅผ ํฌํจํ ๋ชจ๋ ํ๋ฉด ํฌ๊ธฐ์์ ์ต์ ํ๋ ๊ฒฝํ์ ์ ๊ณตํ๋๋ก ์ฑ์ ๋ฐ์ํ ๋์์ธ์ ๊ฐ์ ํ์ต๋๋ค.
- ๋ค์ํ ๋๋ฐ์ด์ค์์ ๋ ๋์ ์ฌ์ฉ์ฑ์ ์ํด ๋ ์ด์์์ ํ ์คํธํ๊ณ ์์ ํ์ต๋๋ค.
feature/v-1.0.0๋ฐfeature/v-2.0.0๋ธ๋์น๋ฅผ ํตํด ํ์ธํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ๋ฐ์ดํฐ ๋ฐ ์ฌํ ๊ธฐ๋ก ๊ด๋ฆฌ๋ฅผ ์ํด Node.js์ Express.js๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฑ์๋๋ฅผ ๊ฐ๋ฐํ๊ณ ํตํฉํ์ต๋๋ค.
- MongoDB๋ฅผ ์ฌ์ฉํ์ฌ ์ฌํ ์ธ๋ถ ์ ๋ณด์ ํต๊ณ๋ฅผ ์ง์์ ์ผ๋ก ์ ์ฅํ ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํํ์ต๋๋ค.
- ๊ฐ์ธ ๊ณ์ ๊ณผ ์์ ํ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ์ํด Bcrypt.js ๋ฐ JSONwebtoken์ ํ์ฉํ ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ReactQuery/TanStack์ ์ฌ์ฉํด ์๊ฒฉ ์ํ๋ฅผ ๊ด๋ฆฌํ์ผ๋ฉฐ, UI ๊ธ๋ก๋ฒ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํด React Redux Toolkit์ ์ฌ์ฉํ์ต๋๋ค.
์ฑ๊ณผ:
- GeoJSON ๋ฐ ์ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ Leaflet.js ํ์ฉํ์ฌ ์ธํฐ๋ํฐ๋ธ ์ง๋ ์๊ฐํ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํ.
- ์ฌ์ฉ์๊ฐ ๋ฐฉ๋ฌธํ ๊ตญ๊ฐ์ ๋์๋ฅผ ์ง๊ด์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ผ๋ก ์ฌ์ฉ์ ๋ง์กฑ๋๋ฅผ ํฌ๊ฒ ํฅ์.
- MongoDB๋ฅผ ํ์ฉํ์ฌ ์ฌ์ฉ์ ๋ฐ์ดํฐ(๋ฐฉ๋ฌธ ๊ตญ๊ฐ, ๋์, ์ฌํ ๊ธฐ๋ก ๋ฑ)๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ฒ์.
- ์ฌํ ํต๊ณ(๋ฐฉ๋ฌธ ๊ตญ๊ฐ ์, ๊ฑฐ๋ฆฌ, ์ฌํ ์ผ์,๊ฐ์ธ ๋ ธํธ ๋ฑ)๋ฅผ ๊ณ์ฐํ๊ณ ์๊ฐ์ ์ผ๋ก ํํํ์ฌ ๋ฐ์ดํฐ ๋ถ์ ์ญ๋ ๊ฐํ.
- CSS Module ๋ฐ React๋ฅผ ์ฌ์ฉํด ๋ฐ์ํ UI๋ฅผ ๊ฐ์ธ์ ์ผ๋ก ๊ตฌํํ์ฌ ๋ค์ํ ๋๋ฐ์ด์ค์์ ์ต์ ์ ์ฌ์ฉ์ ๊ฒฝํ ์ ๊ณต
๋ฐฐ์ด ์ :
- ํ๋ก ํธ์๋์ ๋ฐฑ์๋์ ์ญํ ๊ณผ ์ํธ์์ฉ์ ๊น์ด ์ดํดํ๋ฉฐ, ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ์ ์ค์์ฑ์ ํ์ต.
- RESTful API ์ค๊ณ ๋ฐ ์ํ ๊ด๋ฆฌ๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ์ ์งํ๋ ๋ฐฉ๋ฒ ์ต๋.
- GeoJSON ํ์์ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ ์ง๋ ์์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๊ฐํํ๋ ๊ธฐ์ ์ ๋ฐฐ์.
- ์ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ์ฉ๋ฒ๊ณผ ์ง๋ ์์ ๋ฐ์ดํฐ ๋ ๋๋ง ์ต์ ํ ๊ธฐ๋ฒ ํ์ต.
- MongoDB์์ ๋ณต์กํ ์ฟผ๋ฆฌ์ ์ธ๋ฑ์ฑ์ ์ฌ์ฉํ์ฌ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ ์ต๋.
- ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ํตํด ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ธฐ์ ํฅ์.
- ์ง๊ด์ ์ด๊ณ ๋ฐ์ํ์ธ UI/UX ์ค๊ณ๋ฅผ ํตํด ๋ค์ํ ์ฌ์ฉ์ ํ๊ฒฝ์ ์ ํฉํ ์ธํฐํ์ด์ค ์ค๊ณ ๊ธฐ์ ์ ์ฌ๋ฌ ๋ฒ ์ ๊ทธ๋์ดํธ ํ๋ฉด์ ๊ฒฝํ ํ ๊ฒ.
- ํ๋ก์ ํธ ์งํ ์ค ๋ฐ์ํ ๋ฐ์ดํฐ ๋๊ธฐํ ๋ฐ ์ฑ๋ฅ ์ด์๋ฅผ ํด๊ฒฐํ๋ฉฐ ๋๋ฒ๊น ๊ธฐ์ ํฅ์.
- ์ด ํ๋ก์ ํธ๋ Jonas Schmedtmann์ Udemy ๊ฐ์ข, The Ultimate React Course๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ต ๋ฐ ๊ฐ์ ๋ชฉ์ ์ผ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค.
- ํด๋น ๊ฐ์ข์์๋ ํ๋ก ํธ์๋๋ง ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ์ด๋ฅผ
feature/v-1.0.0๋ธ๋์น์์ ํ์ธํ ์ ์์ต๋๋ค. - ๋ฒ์ 1์ ๋ฐฑ์๋๊ฐ ํฌํจ๋์ง ์์์ผ๋ฉฐ, ๊ฐ์ธ ๊ธฐ์ฌ ์ฌํญ์ธ ๋ฐ์ํ ๋์์ธ์ด ํฌํจ๋์์ต๋๋ค.
- ๋ฒ์ 2์์๋ ๋ฐฑ์๋ ํตํฉ์ด ์์๋์์ผ๋ฉฐ, ์ฃผ์ ๊ธฐ๋ฅ์ ReactQuery/TanStack๊ณผ React Redux Toolkit์ ์ฌ์ฉํด ๊ธ๋ก๋ฒ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ค.
This is my custom hook. Here data is initially undefined.
export function useCities2() {
const {
isLoading,
data, ///data is initially undefined.
error,
} = useQuery({
queryKey: ["cities"],
queryFn: getCities,
refetchOnMount: true,
});
console.log(data);
return { isLoading, error, data };
}So if we want to use like
const { data } = useCities2(); // Frist render data undefined so error is occoured
const { cities } = data; //Tip
Solution:
const {
isLoading,
data = {},
error,
} = useQuery({
queryKey: ["cities"],
queryFn: getCities,
refetchOnMount: true,
});- ์ฐ๋, ๊ตญ๊ฐ ๋๋ ์ฌํ ์ ํ๋ณ๋ก ์ฌํ์ ํํฐ๋งํ๋ ๊ณ ๊ธ ํํฐ๋ง ์ต์ ์ถ๊ฐ
- ๋ฐฉ๋ฌธ ์ฅ์์ ํํธ๋งต๊ณผ ๊ฐ์ ์ฌํ ํ๋ ๋ถ์ ๊ธฐ๋ฅ ์ถ๊ฐ
- AWS EC3๋ฅผ ํตํฉํด ๋ฐฑ์๋ ์ ๋ขฐ์ฑ, ํ์ฅ์ฑ ๋ฐ ๊ฐ์ ๋คํธ์ํฌ ํ๊ฒฝ ๊ฐ์
- ์ฌํ ๊ธฐ๋ก ๋ฐ ์๊ฐํ๋ฅผ ์ ๊ณตํ๋ ์ค์ฉ์ ์ธ ์ฑ ๊ฐ๋ฐ์ ํตํด ์ค๋ฌด์ ์ ์ฌํ ๊ฒฝํ์ ์ถ์ .
- ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๋ ๊ธฐ๋ฒ์ ์ต๋ํ๋ฉฐ, ๊ฐ๋ฐ์๋ก์์ ์์ ๊ฐ์ ์ป์.
- ์ฌ์ฉ์์ ๋์ฆ๋ฅผ ํ์ ํ๊ณ ์ด๋ฅผ ๊ธฐ์ ๋ก ๊ตฌํํ๋ ์ญ๋ ๊ฐํ.





