Skip to content

FC-InnerCircle-ICD1/icd01-team02-o2o2-fe

Repository files navigation

icd01-team02-o2o2-fe

기술 μŠ€νƒ

  • μ–Έμ–΄: 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 # ν”„λ‘œμ νŠΈ μ„€λͺ… 파일

BaseURL

  • src
import { counterAtom } from 'atoms/sample';

Rules

  • μ»΄ν¬λ„ŒνŠΈ 폴더 λͺ…은 camelCase둜 μž‘μ„±ν•΄μ£Όμ„Έμš”
  • μ»΄ν¬λ„ŒνŠΈμ˜ λ‚΄λΆ€ type은 νŒŒμΌμ„ λΆ„λ¦¬ν•΄μ£Όμ„Έμš”(Ex, ~.types.ts)
  • utils의 파일λͺ…은 ν•΄λ‹Ή μœ ν‹Έμ˜ ν•¨μˆ˜μ΄λ¦„μœΌλ‘œ λ§Œλ“€μ–΄μ£Όμ„Έμš”
  • κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•˜λŠ” components, hooks, constants, models의 경우 src/common에 κ·Έμ™Έμ—λŠ” 각 νŽ˜μ΄μ§€μ— λ§Œλ“€μ–΄μ£Όμ„Έμš”(μœ„ ꡬ쑰 μ°Έμ‘°)
  • useState μ‚¬μš©μ˜ 경우 [μƒνƒœ, set+μƒνƒœ] = useState() ν˜•μ‹μœΌλ‘œ μž‘μ„±ν•΄μ£Όμ„Έμš”\
  • propsλŠ” μ»΄ν¬λ„ŒνŠΈλͺ…+Props둜 μž‘μ„±ν•©λ‹ˆλ‹€(ex, UserProps)

About

πŸ” O2O platform service

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •