Info
Repository
Environment
- vite
- react
- typeScript
- msw (mock service worker)
- chrome์ mock BE๋ฅผ ์์ฑํ์ฌ ํต์ ํ ์คํธ
- zustand (์ํ๊ด๋ฆฌ)
- axios (api ํต์ JWT ํ ๊ทผ ์ฌ์ฉ)
- react-secure-storage (JWT ํ ํฐ ๋ณด์ ์ ์ฅ)
- scss
- lodash (throttling/debounce)
- dayjs (๋ ์ง ๊ฐ์ฒด)
Package.json
{
"name": "react-guide",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
"preview": "vite preview"
},
"dependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.0",
"@mui/material": "^6.3.0",
"axios": "^1.7.9",
"dayjs": "^1.11.13",
"lodash": "^4.17.21",
"msw": "^2.7.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-error-boundary": "^5.0.0",
"react-query": "^3.39.3",
"react-router-dom": "^7.1.1",
"react-secure-storage": "^1.3.2",
"scss": "^0.2.4",
"vite-tsconfig-paths": "^5.1.4",
"zustand": "^5.0.2"
},
"devDependencies": {
"@eslint/js": "^9.17.0",
"@types/react": "^18.3.17",
"@types/react-dom": "^18.3.5",
"@typescript-eslint/eslint-plugin": "^8.19.1",
"@typescript-eslint/parser": "^8.19.1",
"@vitejs/plugin-react": "^4.3.4",
"eslint": "^9.17.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-react": "^7.37.3",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-react-refresh": "^0.4.16",
"globals": "^15.13.0",
"prettier": "^3.4.2",
"sass-embedded": "^1.83.1",
"typescript": "~5.6.2",
"typescript-eslint": "^8.18.1",
"vite": "^6.0.3"
},
"msw": {
"workerDirectory": [
"public"
]
}
}Directory Structure
- assets - ์ ์ ๋ฆฌ์์ค ๋ชจ์
- components - ๊ณตํต component ๋ชจ์
- repositories - api ๋๋ local ์ ์ฅ์ ์ ๊ทผ function ๋ชจ์
- stores - ์ํ ๊ด๋ฆฌ ๋ชจ์
- typings - type ๋ชจ์
- utils - utility function ๋ชจ์
- views - ํ๋ฉด ๋ชจ์ (๊ฐ๊ฐ์ ํ๋ฉด์ ๋ฐ๋ผ ๋ถ๋ฆฌ) MVVM ํจํด
- {name}Page.scss - ํ๋ฉด์์ ์ฌ์ฉํ๋ css
- {name}Page.tsx - ์ค์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๋ถ๋ถ
- use{name}PageViewModel.ts - ํ๋ฉด์์ ํ์ํ variable ๋๋ function์ ๊ด๋ฆฌ
(store์ ์ ๊ทผํ ๊ฒฝ์ฐ, viewModel์์๋ง ์ ๊ทผ ๊ฐ๋ฅ) - components - ํ๋ฉด์์ ํ์ํ components์ ๋ชจ์
(components ๋ด๋ถ์๋ ํ์ด์ง์ ๋์ผํ๊ฒ MVVM ํจํด)
Tree
.
โโโ assets
โย ย โโโ scss
โโโ components
โย ย โโโ snackbar
โโโ repositories
โโโ stores
โโโ typings
โย ย โโโ constants
โโโ utils
โย ย โโโ api
โย ย โโโ color
โย ย โโโ date
โย ย โโโ error
โย ย โโโ storage
โโโ views
ย ย โโโ auth
ย ย โย ย โโโ components
ย ย โย ย โย ย โโโ authorized
ย ย โย ย โย ย โโโ login
ย ย โโโ calendar
ย ย โย ย โโโ dailyCalendar
ย ย โย ย โย ย โโโ components
ย ย โย ย โย ย โย ย โโโ dailyCalendarBody
ย ย โย ย โย ย โย ย โโโ dailyCalendarHeader
ย ย โย ย โโโ monthlyCalendar
ย ย โย ย โย ย โโโ components
ย ย โย ย โย ย โย ย โโโ monthlyCalendarBody
ย ย โย ย โย ย โย ย โโโ monthlyCalendarDate
ย ย โย ย โย ย โย ย โโโ monthlyCalendarHeader
ย ย โย ย โย ย โย ย โโโ monthlyCalendarSchedule
ย ย โย ย โโโ popup
ย ย โย ย โย ย โโโ dateSchedulePopup
ย ย โย ย โย ย โโโ scheduleAddPopup
ย ย โย ย โย ย โโโ scheduleModifyPopup
ย ย โย ย โโโ scheduleList
ย ย โย ย โโโ weeklyCalendar
ย ย โย ย โโโ components
ย ย โย ย โย ย โโโ weeklyCalendarBody
ย ย โย ย โย ย โโโ weeklyCalendarDate
ย ย โย ย โย ย โโโ weeklyCalendarHeader
ย ย โโโ layouts
ย ย โย ย โโโ sidebar
ย ย โย ย โโโ components
ย ย โย ย โย ย โโโ menu
ย ย โย ย โย ย โโโ userInfo
ย ย โโโ main