- Frontend: React (Functional Components, Hooks μ€μ¬. ν¨μ μ μΈ μ€νμΌμ Coding Standardsμ ν¨μ μ μΈ μ€νμΌ κ·μΉμ λ°λ₯Έλ€.)
- Style: Tailwind CSS + Shadcn UI (Maintain Design Consistency)
- Language: TypeScript (Strict mode, No
any) - Routing: React Router v7
- State: Zustand (UI State), TanStack Query (Server State)
- Networking: Axios (with Interceptors), MSW (Mocking Sync required)
- "μ½κΈ° μ¬μ΄ μ½λ" μ΅μ°μ : λ³μλͺ μ μ§κ΄μ μΌλ‘, λ‘μ§μ λ¨μνκ² μμ±ν κ².
- μ£Όμ μμ± μμΉ:
- μ£Όμμ μ½λκ° "무μμ νλμ§"λ³΄λ€ "μ μ΄λ κ² μ²λ¦¬νλμ§"λ₯Ό μ€λͺ νλ€.
- μ½λλ§μΌλ‘ μλκ° λΆλͺ ν λ¨μ λ‘μ§μλ μ£Όμμ λ¬μ§ μλλ€.
- νλ©΄, ν
, mock, APIμ²λΌ νλ¦μ΄ κΈ΄ νμΌμ κΈ°μ‘΄ μ½λμ²λΌ λ²νΈλ μ§§μ μ λͺ©μΌλ‘ ꡬνμ λλλ€.
- μ:
// 1. λ°μ΄ν° κ°μ Έμ€κΈ° λ° κΆν νμΈ,{/* μ°Έμ¬μ λͺ λ¨ μΉμ */}
- μ:
- μ ν μ μ± , μλ² μλ΅ λ³΄μ, μΊμ λκΈ°ν, μμΈ μ²λ¦¬, mockμ΄ μ€μ λ°±μλ μ μ± μ νλ΄ λ΄λ λΆλΆμλ μ§§μ νκ΅μ΄ μ£Όμμ λ¨κΈ΄λ€.
- μ£Όμμ κΈ°λ³Έμ μΌλ‘ 1~2μ€λ‘ μμ±νκ³ , κΈ΄ μ€λͺ μ Plan λ¬Έμλ λ³λ λ¬Έμμ λ¨κΈ΄λ€.
- μ€λλ μ£Όμ, μ£Όμ μ²λ¦¬λ λ―Έμ¬μ© μ½λ, μ½λμ λ§μ§ μλ μ€λͺ μ μμ κ³Όμ μμ ν¨κ» μ 리νλ€.
- λͺ¨λν: νλμ νμΌμ΄ λ무 κΈΈμ΄μ§μ§ μκ² κΈ°λ₯λ³λ‘ λΆλ¦¬ν κ².
- μλ¬ μ²λ¦¬: μμΈ μν©(Error Handling)μ νμ κ³ λ €νμ¬ μ½λλ₯Ό μμ±ν κ².
- Strict Typing:
anyμ¬μ©μ μ격ν κΈμ§νλ©°, λͺ¨λ API μλ΅κ³Ό Propsμ λν΄ κ΅¬μ²΄μ μΈ interface/typeμ μ μν κ². - λ°μ΄ν° κ΄λ¦¬ μμΉ: μλ² λ°μ΄ν°(Server State)λ TanStack Queryλ₯Ό, μμ UI μνλ μ μ μΊμ±(Client State)μ Zustandλ₯Ό μ¬μ©νμ¬ μν μ μ격ν λΆλ¦¬ν κ².
- MSW Sync: μλ‘μ΄ API μ°λμ΄λ μμ μ, λ°λμ
src/mocksλ΄μ λͺ¨νΉ νΈλ€λ¬μ λ°μ΄ν°λ μΈνΈλ‘ μ λ°μ΄νΈν κ². - μ½λ κ²ν λ° νμ§ κ΄λ¦¬:
- μ½λ κ²ν (νμ
체ν¬, ν¬λ§€ν
κ²μ¬ λ±)κ° νμν λλ
yarn check-allλͺ λ Ήμ΄λ₯Ό μ¬μ©ν κ². - μ½λ ν¬λ§€ν
μ΄ νμν κ²½μ°
yarn fixλͺ λ Ήμ΄λ₯Ό μ¬μ©ν κ².
- μ½λ κ²ν (νμ
체ν¬, ν¬λ§€ν
κ²μ¬ λ±)κ° νμν λλ
- ν¨μ μ μΈ μ€νμΌ:
- React μ»΄ν¬λνΈλ
functionν€μλλ‘ μ μΈνλ€.- μ:
export default function EventMain() { ... }
- μ:
- 컀μ€ν
ν
μ κΈ°μ‘΄ μ½λλ² μ΄μ€ ν¨ν΄μ λ§μΆ°
functionν€μλλ‘ μ μΈνλ€.- μ:
export default function useEventDetail(...) { ... }
- μ:
- μ»΄ν¬λνΈ/ν
λ΄λΆμ μ΄λ²€νΈ νΈλ€λ¬, λΉμ¦λμ€ λ‘μ§, μ νΈλ¦¬ν° ν¨μλ νμ΄ν ν¨μλ‘ μμ±νλ€.
- μ:
const handleSubmit = async () => { ... }
- μ:
- μ»΄ν¬λνΈκ° μλ export μ νΈλ¦¬ν°λ νμ΄ν ν¨μλ‘ μμ±νλ€.
- μ:
export const formatDate = (...) => { ... }
- μ:
- React μ»΄ν¬λνΈλ
- Step-by-Step Approach: μ½λλ₯Ό μμ νκΈ° μ , λ°λμ λ€μ λ νμΌμ μμ±/μ
λ°μ΄νΈνμ¬ μ μνλ€.
- [Implementation Plan]: ꡬ체μ μΈ μμ λ²μμ λ‘μ§μ νκ΅μ΄λ‘ κΈ°μ ν λ¬Έμ.
- [Task]: 체ν¬λ°μ€(
- [ ]) ννμ μΈλΆ μμ 리μ€νΈ νμΌ.
- Permission Required: μ λ νμΌμ΄ μμ±λκ³ , μ¬μ©μμ **μΉμΈ(Confirmation)**μ λ°μ νμλ§ μ€μ μ½λ μμ μ μμνλ€.
- Progress Tracking: μμ μ΄ μ§νλ¨μ λ°λΌ [Task] νμΌμ 체ν¬λ°μ€λ₯Ό μ λ°μ΄νΈνμ¬ μ§ν μν©μ 곡μ νλ€.
- μΈμ΄: λͺ¨λ μ€λͺ κ³Ό μ£Όμ, μμ κ³ν(Plan)μ **'νκ΅μ΄'**λ‘ μμ±.
- μ€λͺ λ°©μ: μ΄λ³΄μλ μ΄ν΄ν μ μκ² μ½κ² μ€λͺ νλ, λΉμ¦λμ€ λ‘μ§κ³Ό ꡬ쑰λ₯Ό λͺ νν μ§μ΄μ€ κ².
- νλ: λ¨μν μ½λλ§ μ§μ§ λ§κ³ , λ΄ μμ²μ μ μ¬λ '리μ€ν¬'λ λ μ’μ 'λμ'μ΄ μλ€λ©΄ λ¨Όμ μ μν΄μ£Όλ ννΈλκ° λ κ².
- λ΅λ³ νμ: [κ²°λ‘ /ν΄κ²°μ± ] -> [μ½λ] -> [μμΈ μ€λͺ ] μμλ‘ λκ΄μμΌλ‘ λ΅λ³ν κ².