- μΈμ΄: Typescript
- νλ μμν¬ : React
- λ²λ€λ¬: Vite
- μλ² μν κ΄λ¦¬ : React-Query
- μ μ μν κ΄λ¦¬ : Jotai
- CSS λΌμ΄λΈλ¬λ¦¬:
- λμμΈ μμ€ν : StoryBook
- ν μ€νΈ : StoryBook, Cypress(λ―Έμ )
- node : node v20.16.0 μ΄μ
VITE_USE_MSW="true" // MSW μ¬μ©νλ κ²½μ°
VITE_API_BASE_URL="/api/v1"
VITE_KAKAO_MAP_KEY=ab8c859d7d2f6ccd51454ffee6559ff4
npm install
npm run dev
project-root/
βββ public/ # μ μ νμΌ (HTML, μ΄λ―Έμ§ λ±)
β βββ index.html
β βββ favicon.ico
βββ src/ # μμ€ μ½λ
β βββ api/ # API νΈμΆ κ΄λ ¨ ν¨μ
β β βββ instance/ # API instance
β βββ atoms/ # Jotai atoms
β β βββ sample.ts
β βββ common/ # 곡ν΅μΌλ‘ μ¬μ©νλ μ»΄ν¬λνΈ, ν
, λͺ¨λΈ, μμ
β β βββ components/ # κ³΅ν΅ μ»΄ν¬λνΈ
β β βββ hooks/ # κ³΅ν΅ ν
β β βββ models/ # κ³΅ν΅ λͺ¨λΈ
β β βββ constants/ # κ³΅ν΅ μμ
β βββ pages/ # νμ΄μ§ μ»΄ν¬λνΈ
β β βββ dashboard/ # ν νμ΄μ§ κ΄λ ¨ νμΌλ€
β β β βββ components/ # νμ΄μ§ μ μ© μ»΄ν¬λνΈ
β β β βββ hooks/ # νμ΄μ§ μ μ© ν
β β β βββ models/ # νμ΄μ§ μ μ© λͺ¨λΈ
β β β βββ constants/ # νμ΄μ§ μ μ© μμ
β β β βββ index.tsx # ν νμ΄μ§ μ»΄ν¬λνΈ
β β βββ menu/ # λ€λ₯Έ νμ΄μ§ μμ (menu νμ΄μ§)
β β βββ components/
β β βββ hooks/
β β βββ models/
β β βββ constants/
β β βββ Index.tsx # menu νμ΄μ§ μ»΄ν¬λνΈ
β βββ queries/ # React Query κ΄λ ¨ hookλ€
β β βββ keys/ # query key
β βββ routes/ # route κ΄λ ¨ λͺ¨μ
β β βββ appRoutes/ # appμ κΈ°λ³Έ routes
β β βββ WithAuth/ # μ¬μ©μ Roleμ λ°λ₯Έ νμ΄μ§ μ κ·Ό κ΄λ¦¬λ₯Ό μν κ³ μ°¨μ μ»΄ν¬λνΈ
β βββ styles/ # μ€νμΌ λͺ¨μ
β β βββ global.css/ # μ μ μ€νμΌ λ¦¬μ
β βββ App.tsx # λ©μΈ μ± μ»΄ν¬λνΈ
β βββ main.tsx # μνΈλ¦¬ ν¬μΈνΈ
βββ .gitignore # Git 무μ κ·μΉ
βββ package.json # μ’
μμ± λ° μ€ν¬λ¦½νΈ μ 보
βββ README.md # νλ‘μ νΈ μ€λͺ
νμΌ
- src
import { counterAtom } from 'atoms/sample';
- μ»΄ν¬λνΈ ν΄λ λͺ μ camelCaseλ‘ μμ±ν΄μ£ΌμΈμ
- μ»΄ν¬λνΈμ λ΄λΆ
type
μ νμΌμ λΆλ¦¬ν΄μ£ΌμΈμ(Ex,~.types.ts
) - utilsμ νμΌλͺ μ ν΄λΉ μ νΈμ ν¨μμ΄λ¦μΌλ‘ λ§λ€μ΄μ£ΌμΈμ
- 곡ν΅μΌλ‘ μ¬μ©νλ
components
,hooks
,constants
,models
μ κ²½μ°src/common
μ κ·ΈμΈμλ κ° νμ΄μ§μ λ§λ€μ΄μ£ΌμΈμ(μ ꡬ쑰 μ°Έμ‘°) useState
μ¬μ©μ κ²½μ°[μν, set+μν] = useState()
νμμΌλ‘ μμ±ν΄μ£ΌμΈμ\props
λ μ»΄ν¬λνΈλͺ +Propsλ‘ μμ±ν©λλ€(ex, UserProps)