
์ฌ์ด ์์
๊ด๋ฆฌ๋ก ์ด๋ฆฌ๋ ์ ํํ ๋์ ๊ฒฐ์ค
๊ณผ์ธ์ ์ถ๊ฒฐ ์ฒดํฌ๋ถํฐ ์์
๋น ๊ด๋ฆฌ๊น์ง ํ๋ฒ์ ํด๋ฆญ์ผ๋ก ์ฝ๊ฒ ๊ด๋ฆฌํ์ธ์.
![]() |
|
๊ถ์๋น ๐
|
๊ถํ์ธ ๐ |
original Members ๋ฅ์ฑ๊ฒฝ๐, ๋ฐํฌ์ ๐ฅ, ์์ง์๐
์ญํ | ์ข ๋ฅ |
---|---|
Library | |
Programming Language | |
Styling | |
State Management | |
Data Fetching | |
Formatting | |
Version Control | |
Package Manager | |
Deployment |
-
ํ์ ๊ณผ๋ชฉ ๋ฑ๋ก
-
ํ์ฐจ, ๋ ์ง, ์๊ฐ ์ฌ๋ผ์ด๋ ๊ตฌํ
-
์ ๊ธฐ ์์ผ ์ ํ
(์ฒซ ์์ ์ผ ๊ฒฝ์ฐ ๋ํดํธ ๊ฐ์ ํ์ฌ ๋ ์ง์ด๋ฉฐ, ํ์ฌ ์ ํํ ์์ผ์ ํด๋นํ์ง ์๋ ๋ ์ง๋ฅผ ์ฒซ ์์ ์ผ๋ก ์ ํํ ๊ฒฝ์ฐ, ์ ์ฅ ๋ถ๊ฐ ๋ฐ ์ ํ๋ ์์ผ ๋ฐฐ์ด์ ์ํํ๋ฉฐ ํด๋น ์์ผ์ด ์๋ ๋ ์ง ๋ฒํผ ๋นํ์ฑํ) -
์์ ์ผ์ ์์ธ ์ผ์ด์ค ์ฒ๋ฆฌ
์ํฉ ๋นํ์ฑ ๋ฒํผ ์กฐ๊ฑด๋ฌธ์ ํตํด ์๊ฐ ๋ฐ ์ข ๋ฃ ์๊ฐ์ ๋ชจ๋ ์ ๋ ฅํ์ง ์์์ ๋ ์์ ์ผ์ ์ถ๊ฐ ์๊ฐ๋ง ์ ๋ ฅํ๊ณ ์์ผ์ ์ ๋ ฅํ์ง ์์ ๊ฒฝ์ฐ ์์ ์ผ์ ์ถ๊ฐ ์์ผ์ ์ ํํ ๋, ์์, ์ข ๋ฃ ์๊ฐ์ ์ ๋ ฅํ์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฒํผ ์ฒซ ์์ ์ผ์ ํด๋นํ๋ ์์ผ์ด ์ ํํ ์์ ์ผ์ ์์ผ์ ํด๋นํ์ง ์๋ ๊ฒฝ์ฐ ์ ์ฅ
-
useState
๋ฅผ ์ฌ์ฉํด ๊ฐ ์ ๋ ฅํผ์focus
๋์๋ ์ง ๊ด๋ฆฌ ์ ๋ ฅ๋ฐ์ ๊ฐrecoil
๋ก ๊ด๋ฆฌ -
swiper
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ฌ๋ผ์ด๋ ๊ตฌํ<StyledSwiper direction="vertical" slidesPerView={7} spaceBetween={15} freeMode={true} freeModeSticky={true} freeModeMomentumRatio={0.25} freeModeMinimumVelocity={0.1} loop={true} loopAdditionalSlides={5} slideToClickedSlide={true} centeredSlides={true} onSlideChange = {handleSlideChange} > {slides} </StyledSwiper>
-
loop = {true}
์์ฑ๊ฐ์ ํตํ ์คํฌ๋กค์ ์ด์ด์ง๋๋ก ๊ตฌํ -
swiper.realIndex
๋ฅผ ํตํด ์ ์ ๊ฐ ์ ํํ ์ธ๋ฑ์ค์ ์ฌ๋ผ์ด๋ ์ถ์
๋ ์ง ์ฌ๋ผ์ด๋์ ๊ฒฝ์ฐ, ํ์ฌ ๋ฌ์ ๊ธฐ์ค์ผ๋ก ์ด์ , ํ์ฌ, ๋ค์ ๋ฌ์ ๋ชจ๋ ๋ ์ง๋ฅผ ๋ด๋ ๊ฐ์ฒด ๋ฐฐ์ด์ ์์ฑํ์ฌ ๊ฐ ๊ฐ์ฒด๊ฐ ํ๋์ ์ฌ๋ผ์ด๋๊ฐ ๋๋๋ก ๊ตฌํ

- ์์
๊ด๋ฆฌ ( ์ถ๊ฒฐ ๋ฐ ์
๊ธ ๊ด๋ฆฌ)
- ์ถ๊ฒฐ ์ฒดํฌ ํ ์๋ฆผ ๋ณด๋ด๊ธฐ
- ์
๊ธ ์๋ฆผ ๋ณด๋ด๊ณ ์
๊ธ ๋ฑ๋ก
- ์ฐ์ฅํ์ง ์์ ์์
์ด ์๋ ๊ฒฝ์ฐ ๋ฐฐ๋ ๋์ฐ๊ธฐ
children, props
๋ฅผ ์ด์ฉํ ๊ณตํต ์ปดํฌ๋ํธ ๊ตฌํ- ์์
๋ด์ญ ๋๋ ์
๊ธ ๋ด์ญ์ธ์ง์ ๋ํ ํ์ฌ ํ์ด์ง ์ ๋ณด
recoil
๋ก ๋ถ๋ฌ์ค๊ธฐ

- ํ ํ์ด์ง์์ ์์
์งํ ์ค์ธ ํ์ ์ถ์ ์ฒดํฌ
- ์์
๊ด๋ฆฌ ํ์ด์ง์์ ์ถ๊ฒฐ ์ฒดํฌ ๋ฐ ์์
- ๋์น ์ถ๊ฒฐ ํ์ด์ง์์ ์ถ๊ฒฐ ์ฒดํฌ
- ์ถ๊ฒฐ ์์ ์ ์ด์ ์ถ๊ฑ ์ฌํญ ๋ฒํผ ๋นํ์ฑํ
- ์ถ๊ฒฐ ์ฒดํฌ ํ ์คํธ ๋ชจ๋ฌ, ์ถ๊ฒฐ ์ฒดํฌ ์ ํ์ ํ์ธ ๋ชจ๋ฌ ๋์ฐ๊ธฐ
- ์ต์ข
์ถ๊ฒฐ ์ฒดํฌ ํ์ธ ์ ์ฒดํฌ๋๋ ์ ๋๋ฉ์ด์
๊ตฌํ
- ์ต์ข
์ถ๊ฒฐ ์ฒดํฌ ์ดํ ์ถ๊ฒฐ ์๋ฆผ ์ ์ก ํ ์คํธ ๋ชจ๋ฌ
- ํธ์ฌ ์๋ฆผ์ ์๋๊ฐ ํ์ฉํ์ง ์์์ ์์ ๊ฒฝ๊ณ ๋ชจ๋ฌ
- ์ถ๊ฒฐ ์๋ฆผ
- ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ฐ์ ธ์ (์ถ์, ๊ฒฐ์, ์ทจ์, ์ถ์์ฒดํฌ ๋์น ์ดํ์ ์ถ์, ๊ฒฐ์, ์ทจ์ ์ ํ ๋ฑ)
switch-case
๋ฌธ๊ณผ์ผํญ ์ฐ์ฐ์
์ฌ์ฉ
- ์บ๋ฆฐ๋๋ทฐ
date-fns
์ผ๋ก ๊ตฌํ - ์ค๋ ๋ ์ง๋ถ๋ถ ๋ฉ์ผ ์ปฌ๋ฌ์ ๋ฐฐ๊ฒฝ์ผ๋ก ๋ค๋ฅธ ๋ ์ง์ ๋ค๋ฅด๊ฒ ๊ตฌ์ฑ
get
ํด์จ ๋ฐ์ดํฐ์ ๋ง๋ ๋ ์ง์ ์๊ฐ ์์๋๋ก ์ฌ๋ ์ด๋ฆ ๋ฐ ์์ ์๊ฐ ๋ถ๋ฌ์ ์บ๋ฆฐ๋์ ๋์์ฃผ๊ธฐ- ์ค์ผ์ค ์์ ์บ๋ฆฐ๋, ์์ ์ด ๋ถ๊ฐ๋ฅํ๊ณ ์กฐํ๋ง ๊ฐ๋ฅํ ์บ๋ฆฐ๋, ์์๋ก ์ ์ฅํ ์์
์๊ฐ๊ณผ ํจ๊ป ๊ฐ์ง๊ณ ์๋ ์ค์ผ์ค์ ํ ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ์บ๋ฆฐ๋๋ก ๋๋๊ธฐ
- ๊ฐ ์บ๋ฆฐ๋์์ ์ํ๋ ๋ ์ง๋ฅผ ํด๋ฆญํ ์, ํด๋น ๋ ์ง์ ์๋ ์ค์ผ์ค์ ๋ชจ๋ ๋ณด์ฌ์ฃผ๋ ๋ชจ๋ฌ ๊ตฌํ
- ๊ฐ ๋ ์ง์ 4๊ฐ ์ด์์ ์ค์ผ์ค์ด ์์ ๊ฒฝ์ฐ, 2๊ฐ๊น์ง๋ง ๋ณด์ฌ์ฃผ๊ณ ๋๋ณด๊ธฐ์ ๊ด๋ จ๋ ์์ด์ฝ ๋์์ฃผ๊ธฐ
- ์์ ์ด ๊ฐ๋ฅํ ์บ๋ฆฐ๋์์ ์ํ๋ ๋ ์ง๋ฅผ ํด๋ฆญํ๋ฉด ํ ์คํธ ๋ชจ๋ฌ์์ ํธ์ง๋ฒํผ์ ๋๋ฅผ ์์ ํธ์ง ๋ชจ๋๋ก ์ ํ
- ํธ์ง ๋ชจ๋ ๋ชจ๋ฌ์์ ํธ์งํ๊ธฐ ์ํ๋ ์ค์ผ์ค์ ํด๋ฆญํ์ฌ ํธ์ง ํ์ด์ง๋ก ์ด๋
- ํธ์ง ํ์ด์ง์์ ์ฌ๋ผ์ด๋๋ฅผ ์ด์ฉํด ์ํ๋ ์ค์ผ์ค๋ก ์์ ํ๊ณ , ์ ์ฅ์ ๋๋ฅด๋ฉด ๋ฐ๋ก ์บ๋ฆฐ๋๋ก ํ์ธํ๋๋ก ๊ตฌํ
date-fns
๋ฅผ ์ฌ์ฉํ ์ ์ฒด์ ๋ ์ด์์ ๊ตฌํwhile
๋ฌธ์ ์ด์ฉํด ํ ๋ฌ์ ๋ ์ง๋ฅผ ๋ณด์ฌ์ฃผ๋๋ก ๊ตฌํ๊ณตํต ์ปดํฌ๋ํธ
๋ฅผ ์ด์ฉํ์ฌ, ํ ์คํธ ๋ชจ๋ฌ, ์์ ๋ทฐ ์ฌ๋ผ์ด๋ ๋ฑ ๊ตฌํreact-query
์get-patch
๋ฅผ ์ฌ์ฉํ data ๊ด๋ฆฌ
- PWA ํ๊ฒฝ์์ ์ผ๋ฐ ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ๋์ผํ๊ฒ ํธ์ ์๋ฆผ์ ๋ฐ์ ์ ์๋๋ก ์ค์
์ ์๋ ์ฌ์ฉ์๊ฐ ์ถ๊ฒฐ ์ฒดํฌ ๋๋ ์ ๊ธ ์๋ฆผ์ ๋ณด๋ผ ๊ฒฝ์ฐ, ํ๋ถ๋ชจ ์ฌ์ฉ์์๊ฒ ํธ์ฌ ์๋ฆผ์ด ๊ฐ๋๋ก ๊ตฌํ
- ํ์ด์ด๋ฒ ์ด์ค ํ๋ก์ ํธ ์์ฑ ํ ๋ฐ์ ํ sdk๋ฅผ ์ด์ฉํด FCM์ ์ฐ๊ฒฐํ์ฌ ํธ์ ์๋ฆผ ๊ตฌํ
- FCM์ผ๋ก๋ถํฐ ์ ์ ์
deviceToken
์ ๋ฐ๊ณ , ์ด๋ฅผ ์๋ฒ์๊ฒ postํ์ฌ ๊ธฐ๊ธฐ ๋ฑ๋ก - ๋ฑ๋ก๋ ๊ธฐ๊ธฐ๋ก ์๋ฆผ์ด ๊ฐ ์ ์๋๋ก ๊ตฌํ
- PWA ํ๊ฒฝ์์ ์ผ๋ฐ ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ๋์ผํ๊ฒ ํธ์ ์๋ฆผ ๊ฐ๋ฅ.
|-- ๐ .github
|-- ๐ .husky
|-- ๐ node_modules
|-- ๐ public
|-- ๐ src
|-- ๐ api
|-- ๐ atom
|-- ๐ assets
|-- ๐ icon
|-- ๐ image
|-- ๐ assets.d.ts
|-- ๐ index.ts
|-- ๐ core
|-- ๐ components
|-- ๐ common
|-- ๐ hooks
|-- ๐ mocks
|-- ๐ pages
|-- ๐ style
|-- globalStyle.ts
|-- style.d.ts
|-- theme.ts
|-- ๐ utils
|-- ๐ type
|-- App.tsx
|-- main.tsx
|-- Router.tsx
|-- vite-env.d.ts
|-- .eslintrc.cjs
|-- .gitignore
|-- .prettierrc
|-- index.html
|-- package.json
|-- README.md
|-- tsconfig.json
|-- tsconfig.node.json
|-- vite.config.ts
|-- yarn.lock