πͺ λ΄μ€λ₯Ό κ°μμ²λΌ, Snack πͺ
π§π»βπ» Member π©π»βπ»
π° λ΄μ€ μμ½ λ° μ½κΈ°
AI κΈ°λ° λ΄μ€ μμ½ μ 곡
μΉ΄ν
κ³ λ¦¬λ³ λ΄μ€ λΆλ₯ (μ μΉ, κ²½μ , μ¬ν, κ΅μ , μ€ν¬μΈ , μ°μ, IT/κ³Όν)
μλ³Έ κΈ°μ¬ λ§ν¬ μ 곡
μ©μ΄μ§ : κΈ°μ¬ λ΄ μ λ¬Έ μ©μ΄ μ€λͺ
ν΄μ¦ : κΈ°μ¬ λ΄μ© κΈ°λ° νμ΅ ν΄μ¦
λ©λͺ¨μ₯ : κ°μΈ νμ΅ λ
ΈνΈ μμ± λ° μ μ₯
π κ²μ λ° κ°μΈν
μλ―Έλ‘ μ κ²μ (Semantic Search)
κ°μΈ λ§μΆ€ νΌλ (Custom Feed)
μ€ν¬λ© κΈ°λ₯μΌλ‘ κ΄μ¬ κΈ°μ¬ μ μ₯
μμ
λ‘κ·ΈμΈ (Google)
μ΄λ©μΌ νμκ°μ
/λ‘κ·ΈμΈ
νλ‘ν κ΄λ¦¬ λ° μ€μ
React 19 + TypeScript β μ΅μ Reactμ νμ
μμ μ±
Vite β λΉ λ₯Έ κ°λ° νκ²½κ³Ό λΉλ
Tailwind CSS β μ νΈλ¦¬ν° κΈ°λ° μ€νμΌλ§
React Router DOM β SPA λΌμ°ν
π¦ State Management & Data Fetching
TanStack React Query β μλ² μν κ΄λ¦¬
Context API β μ μ μν κ΄λ¦¬ (μΈμ¦)
Embla Carousel β μ¨λ³΄λ© μΉ΄λ μΊλ¬μ
SVG Icons β λ²‘ν° κΈ°λ° μμ΄μ½ μμ€ν
ESLint + Prettier β μ½λ νμ§ λ° ν¬λ§·ν
Husky + lint-staged β Git ν
μ ν΅ν μ½λ νμ§ κ΄λ¦¬
TypeScript β μ μ νμ
κ²μ¬
π₯ Git Commit Convention
μ»€λ° νμ
μ€λͺ
β¨ feat
μλ‘μ΄ κΈ°λ₯ μΆκ°
π fix
λ²κ·Έ λ° μ€λ₯ μμ
π docs
λ¬Έμ μμ (README λ±)
π¨ style
μ½λ ν¬λ§·ν
, μΈλ―Έμ½λ‘ λλ½ λ± (κΈ°λ₯ λ³κ²½ μμ)
β»οΈ refactor
μ½λ 리ν©ν λ§ (κΈ°λ₯ λ³κ²½ μμ)
β
test
ν
μ€νΈ μ½λ μΆκ° λ° μμ
π§ chore
λΉλ μ
무, ν¨ν€μ§ λ§€λμ μ€μ λ± κΈ°ν μμ
π¬ comment
νμν μ£Όμ μΆκ° λ° λ³κ²½
π rename
νμΌ, ν΄λλͺ
μμ λ° μ΄λ
π₯ remove
νμΌ, ν΄λ μμ
π init
νλ‘μ νΈ μμ 컀λ°
π§ͺ TEST
ν
μ€νΈ κ΄λ ¨ μ»€λ° (μμΈ κ΅¬λΆ μ)
Node.js 20.0.0 μ΄μ
pnpm (κΆμ₯, npm λλ yarnλ κ°λ₯)
# μ μ₯μ ν΄λ‘
git clone https://github.com/your-repo/snack-frontend.git
cd snack-frontend
# ν¨ν€μ§ μ€μΉ
pnpm install
# κ°λ° μλ² μ€ν
pnpm dev
# ν
μ€νΈ μ€ν
pnpm test