์ผ๋ฐ์ธ๋ ๋๊ตฌ๋ ํฌ๋ฆฌ์์ดํฐ๊ฐ ๋๋ ์๋์ ๊ฐ์ธ์ด ์์ ์ ์๋ฆฌ๊ณ ํฌ๊ณผ ์ํตํ ์ ์๋ ํ์ด์ง๋ฅผ ์ฝ๊ฒ ์ ์ํ ์ ์๋ ๋ฉํฐ๋งํฌ ์๋ฃจ์
. ์ธ์คํ๊ทธ๋จ ํ๋กํ์ ํ๋์ ๋งํฌ๋ง ๊ฒ์ํ ์ ์์ด ๋งํฌํธ๋ฆฌ ๋ฑ ๋ค์ํ ๋ฉํฐ๋งํฌ ์๋น์ค๊ฐ ๊ธฐ์กด์ ์์ง๋ง ํฌ๋ฆฌ์์ดํฐ(์๊ฐ, ํธ๋ ์ด๋, ๋ฎค์ง์
, ์๋ฆฌ์ฌ, ๊ฐ์ฌ, ๊ฐ๋ฐ์, ์ฌํ๊ฐ ๋ฑ)๋ค์ ํ๊ฒ์ผ๋ก ํฌ์์ ํฌ๋ ํฐ, ๋ฉ์ผ๋ง(๋ด์ค๋ ํฐ) ์ ์ฒญ, ์์ฝ์ ์ฒญ, ํจ๊ปํ๊ธฐ ์ฑ๋ฆฐ์ง ๋ฑ์ ์๋น์ค๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํฉ๋๋ค.
๐ก 'ํฌ์' ๋ฐ๋ก๊ฐ๊ธฐ |
๐ฉ๐ปโ๐ป (์ฃผ) ๋ฆฌ๋์คํด๋ฝ ํ ๋
ธ์
|
๐ฌ ๋ฐ๋ชจ ์์
๐โโ๏ธ ํ๋ก์ ํธ ํ์
๐ ์ญํ ๋ถ๋ด & ๊ฐ๋ฐ ์ผ์ ํ
โ๏ธ ๊ฐ๋ฐ ํ๊ฒฝ ์ค์
- Node.js (v14 ์ด์)
- Yarn ํจํค์ง ๊ด๋ฆฌ์
# ์ข
์์ฑ ์ค์น
yarn
# ๋ก์ปฌ ๊ฐ๋ฐ ์๋ฒ ์คํ
yarn start
ํฌ์ ํ |
|
(ํ ํ์ด์ง๋ ์ ์์์ ์ ํ๋ ๋ฐฐ๋ ์ฌ๋ผ์ด๋, ์๋น์ค ์๊ฐ, ์ ๊ท ํฌ๋ฆฌ์์ดํฐ๋ฅผ ์ฌ๋ผ์ด๋๋ก ๋ณด์ฌ์ค๋๋ค. |
๋ก๊ทธ์ธ & ํ์๊ฐ์
|
|
ํฌ๋ฆฌ์์ดํฐ๋ฅผ ์ํ ๋ก๊ทธ์ธ ๋ฐ ํ์๊ฐ์
ํ์ด์ง๋ก, ์นด์นด์ค, ๋ค์ด๋ฒ, ๊ตฌ๊ธ๊ณผ ๊ฐ์ ์์
๋ก๊ทธ์ธ์ด ๊ฐ๋ฅํฉ๋๋ค. |
ํธ์งํ๊ธฐ(ํฌ๋ฆฌ์์ดํฐ, ์ ์ ) ํ์ด์ง |
|
ํ๋กํ ๋งํฌ ํธ์ง ํ์ด์ง๋ก, ํ
๋ง ๋ฐ๊พธ๊ธฐ, ๋ง์ด ํ๋กํ, ๋งํฌ ์ถ๊ฐํ๊ธฐ, ํผ ์ถ๊ฐํ๊ธฐ ๊ธฐ๋ฅ์ด ์ ๊ณต๋ฉ๋๋ค. |
ํผ ๊ธฐ๋ฅ ํ์ด์ง |
|
ํฌ๋ฆฌ์์ดํฐ๊ฐ ๋ด์ค๋ ํฐ์ ๊ฐ์ ๋ฉ์ผ์ ๋ณด๋ด์ฃผ๊ณ ์ถ์ ๊ฒฝ์ฐ ๊ตฌ๋
์ ์ํ๋ ๋ฐฉ๋ฌธ์์๊ฒ ์ ์ฒญ์ ๋ฐ๋ ๋ฉ๋ด์ธ ๋ฉ์ผ๋ง ์๋น์ค ํผ ์ง๋ฌธ๊ณผ ๋ต๋ณ๋์ ์์ฑํ์ฌ ๋ฐฉ๋ฌธ์๊ฐ ๋๋ ๊ตฌ๋
์, ํ๋ก์๋ค์๊ฒ ๋ณด์ฌ์ง๋ ๋ฉ๋ด์ธ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ ํผ ์บ๋ฆฐ๋, ์ด๋ฏธ์ง์ ๊ฐ์ ์ํ๋ ๊ธฐ๋ฅ์ ์ ํํ์ฌ ์ ์ฒญ ํผ์ ์ค์ ํ๋ ๋ฉ๋ด์ธ ์์ฝ ์ ์ฒญ ํผ ํฌ๋ฆฌ์์ดํฐ์ ๋ฐฉ๋ฌธ์๋ค์ด ํจ๊ป ์ฑ๋ฆฐ์ง๋ฅผ ํ ์ ์๋ ๋ฉ๋ด์ธ ํจ๊ปํด์ ์ฑ๋ฆฐ์ง ํผ ๋ฐฉ๋ฌธ์๋ค์ด ํฌ๋ฆฌ์์ดํฐ์๊ฒ ์ ํ๊ณ ์ถ์ ๋ฉ์์ง๋ฅผ ๋ฐ์กํ ์ ์๋ ํผ์ ์ค์ ํ๋ ๋ฉ๋ด์ธ ํฌ๋ ํฐ ํผ ์ด๋ฒคํธ, ์๋ก์ด ์์, ํ๋ณด ๋ฑ์ ์ฌ์ฉํ ๋ฐฐ๋ ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํ๋ ๋ฉ๋ด์ธ ๋ฐฐ๋ ์ด๋ฏธ์ง ํผ์
๋๋ค. |
๋ง์ดํ(๋ฐฉ๋ฌธ์) ํ์ด์ง |
|
๋ฐฉ๋ฌธ์๋ค์ ํฌ๋ฆฌ์์ดํฐ์ ์์
๋ฏธ๋์ด ํ๋กํ์ ์ค์ ๋ ๋งํฌ๋ฅผ ํตํด ๋ง์ดํ์ ์ ์ํฉ๋๋ค. ํฌ๋ฆฌ์์ดํฐ ํ๋กํ, ๋ฐฉ๋ฌธ์๊ฐ ์ด์ฉํ ์ ์๋ ๋งํฌ, ๊ด๋ฆฌ์๊ฐ ์ค์ ํ ์ถ๊ฐ ์๋น์ค(๊ธฐ๋ฅ)๋ฅผ ํตํด ํฌ๋ฆฌ์์ดํฐ์ ์ํตํฉ๋๋ค. |
๊ณ ๊ฐ๊ด๋ฆฌ(ํฌ๋ฆฌ์์ดํฐ, ์ ์ ) ํ์ด์ง |
|
ํฌ๋ ํฐ, ๋ฉ์ผ๋ง, ์์ฝ ๋ฉ๋ด์์ ์ ์ฒญํ ๋ฐฉ๋ฌธ์๋ค์ ๋ฐ์ดํฐ๋ฅผ ์์
ํ์ผ๋ก ๋ค์ด๋ก๋ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. |
๐ป ์๋น์ค ์ํคํ
์ฒ
โ๏ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
- Firebase: ์ฌ์ฉ์ ์ธ์ฆ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์คํ ๋ฆฌ์ง ๋ฑ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ๊ตฌํ
- Jotai: ์ ์ญ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉ
- Styled-components: JavaScript ์ฝ๋ ๋ด CSS ์คํ์ผ๋ง์ ์ฉ์ดํ๊ฒ ๊ตฌํ
- Ant Design: ๋ค์ํ UI ์ปดํฌ๋ํธ ์ ๊ณต (Button, Space, Modal, Message ๋ฑ)์ผ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋์์ธ์ ํ์ฉ
- lottiefiles/react-lottie-player: .json ํ์ ์ ๋๋ฉ์ด์
์ฌ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๋ก๋ฉ ํ์ด์ง์ ์ด์ ์ฉ๋ ์ ๋๋ฉ์ด์
์ ํ์ฉ
- Lodash: Debouncing ๋ฐ useCallback์ ํ์ฉํ์ฌ ์ฌ์ฉ์ ๋ฒํผ ์
๋ ฅ์ ๋ฐ๋ฅธ ์๋ฒ ๋ถํ ์ต์ํ
- Browser-image-compression: ๋ธ๋ผ์ฐ์ ์์ ์ด๋ฏธ์ง ์์ถ ๊ธฐ๋ฅ ์ ๊ณต, ๋์ฉ๋ ์ด๋ฏธ์ง ์
๋ก๋ ์ ์๋ ์์ถํ์ฌ ์๋ฒ ์ ์ก
- moment: JavaScript์์ ๊ฐํธํ ์๊ฐ ๋ค๋ฃธ
- React-calendar: ๋ ์ง ์ ํ, ํ์, ๋นํ์ฑํ, ์๊ฐ ๋ทฐ ๋ฑ ๋ฌ๋ ฅ ๊ด๋ จ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ
- Swiper: ๋ค์ํ ์คํ์ผ์ ์ฌ๋ผ์ด๋๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํ์ฉ
- xlsx: ๋ฐ์ดํฐ๋ฅผ ์์
ํ์ผ๋ก ์ ์ฅํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ
- ํผ ์์ ๊ฐ ๋ฐ ์ํ ๋ถ์ผ์น๋ก ์ธํ ์๋ฌ ๋ฐ์ ์ด์
- ์ฑ๋ฆฐ์ง ๊ธฐ๊ฐ ๋์ ๋ฌ๋ ฅ์ ํ์ฑํ ์ผ์๊ฐ ์์๊ณผ ๋ค๋ฅธ ์ด์