- AI κΈ°λ° λ΄μ€ μμ½ μ 곡
- μΉ΄ν κ³ λ¦¬λ³ λ΄μ€ λΆλ₯ (μ μΉ, κ²½μ , μ¬ν, κ΅μ , μ€ν¬μΈ , μ°μ, IT/κ³Όν)
- μλ³Έ κΈ°μ¬ λ§ν¬ μ 곡
- μ©μ΄μ§: κΈ°μ¬ λ΄ μ λ¬Έ μ©μ΄ μ€λͺ
- ν΄μ¦: κΈ°μ¬ λ΄μ© κΈ°λ° νμ΅ ν΄μ¦
- λ©λͺ¨μ₯: κ°μΈ νμ΅ λ ΈνΈ μμ± λ° μ μ₯
- μλ―Έλ‘ μ κ²μ (Semantic Search)
- κ°μΈ λ§μΆ€ νΌλ (Custom Feed)
- μ€ν¬λ© κΈ°λ₯μΌλ‘ κ΄μ¬ κΈ°μ¬ μ μ₯
- μμ λ‘κ·ΈμΈ (Google)
- μ΄λ©μΌ νμκ°μ /λ‘κ·ΈμΈ
- νλ‘ν κ΄λ¦¬ λ° μ€μ
- React 19 + TypeScript β μ΅μ Reactμ νμ μμ μ±
- Vite β λΉ λ₯Έ κ°λ° νκ²½κ³Ό λΉλ
- Tailwind CSS β μ νΈλ¦¬ν° κΈ°λ° μ€νμΌλ§
- React Router DOM β SPA λΌμ°ν
- TanStack React Query β μλ² μν κ΄λ¦¬
- Context API β μ μ μν κ΄λ¦¬ (μΈμ¦)
- Embla Carousel β μ¨λ³΄λ© μΉ΄λ μΊλ¬μ
- SVG Icons β λ²‘ν° κΈ°λ° μμ΄μ½ μμ€ν
- ESLint + Prettier β μ½λ νμ§ λ° ν¬λ§·ν
- Husky + lint-staged β Git ν μ ν΅ν μ½λ νμ§ κ΄λ¦¬
- TypeScript β μ μ νμ κ²μ¬
| μ»€λ° νμ | μ€λͺ |
|---|---|
β¨ 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