Skip to content

πŸ“¦ 2024 μ†Œν”„νŠΈμ›¨μ–΄κ³΅ν•™ μΊ‘μŠ€ν†€ λ””μžμΈ, λ§›μžˆλŠ” 재고(Tasty-Inventory)νŒ€μ˜ ν”„λ‘ νŠΈμ—”λ“œ λ ˆν¬μ§€ν† λ¦¬μž…λ‹ˆλ‹€

License

Notifications You must be signed in to change notification settings

Tasty-Inventory/Tasty-Inventory_FE

Repository files navigation

Tasty-Inventory: Front-End

1. κ°œμš”


1.1. μ†Œκ°œ

쉽고 κ°„νŽΈν•œ 재고 관리, λ§›μžˆλŠ” μž¬κ³ μ™€ ν•¨κ»˜ μ‹œμž‘ν•΄μš”! - λ°”λ‘œκ°€κΈ°

  • βœ… μ œμž‘ μ˜λ„: 맀일 μ—‘μ…€ νŒŒμΌμ— μ •λ¦¬ν–ˆλ˜ 재고λ₯Ό λ§›μžˆλŠ” μž¬κ³ μ—μ„œ κ°„νŽΈν•˜κ²Œ μž…λ ₯ν•˜κ³ , 남은 μˆ˜λŸ‰μ„ μ˜ˆμΈ‘ν•  수 μžˆμ–΄μš”.

1.2. 기술 μŠ€νƒ

Category Used
JavaScript JavaScript ES6
React version 18.2.0
react-dom 18.2.0
react-router-dom 6.22.3
react-scripts 5.0.1
redux 5.0.1
styled-components 6.1.8
API Docs Swagger, Notion
CI/CD Vercel
Monitoring Sentry

2. 싀행방법


2.1. Config

  • .env 파일 ν”„λ‘œμ νŠΈ μ΅œμƒμœ„ 디렉토리에 μœ„μΉ˜


    alt text


2.2. npm test

λŒ€ν™”ν˜• κ°μ‹œ λͺ¨λ“œμ—μ„œ ν…ŒμŠ€νŠΈ μ‹€ν–‰κΈ°λ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€.
μžμ„Έν•œ λ‚΄μš©μ€ ν…ŒμŠ€νŠΈ μ‹€ν–‰ μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

2.3. npm run build

build 폴더에 ν”„λ‘œλ•μ…˜μš© 앱을 λΉŒλ“œν•©λ‹ˆλ‹€.
ν”„λ‘œλ•μ…˜ λͺ¨λ“œμ—μ„œ Reactλ₯Ό μ˜¬λ°”λ₯΄κ²Œ λ²ˆλ“€λ§ν•˜κ³  졜고의 μ„±λŠ₯을 μœ„ν•΄ λΉŒλ“œλ₯Ό μ΅œμ ν™”ν•©λ‹ˆλ‹€.

λΉŒλ“œλŠ” μ••μΆ•λ˜κ³  파일 μ΄λ¦„μ—λŠ” ν•΄μ‹œκ°€ ν¬ν•¨λ©λ‹ˆλ‹€.
앱이 배포할 μ€€λΉ„κ°€ μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€!

μžμ„Έν•œ λ‚΄μš©μ€ 배포 μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

2.4. npm run eject

μ°Έκ³ : 이 μž‘μ—…μ€ 되돌릴 수 μ—†μŠ΅λ‹ˆλ‹€. ν•œ 번 ejectλ₯Ό ν•˜λ©΄ λ‹€μ‹œ 되돌릴 수 μ—†μŠ΅λ‹ˆλ‹€!

λΉŒλ“œ 도ꡬ 및 ꡬ성 선택에 λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” 경우 μ–Έμ œλ“ μ§€ ejectν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λͺ…령은 ν”„λ‘œμ νŠΈμ—μ„œ 단일 λΉŒλ“œ 쒅속성을 μ œκ±°ν•©λ‹ˆλ‹€.

λŒ€μ‹  λͺ¨λ“  ꡬ성 파일과 전이 쒅속성(webpack, Babel, ESLint λ“±)을 ν”„λ‘œμ νŠΈλ‘œ λ³΅μ‚¬ν•˜μ—¬ μ™„μ „ν•œ μ œμ–΄ κΆŒν•œμ„ κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. ejectλ₯Ό μ œμ™Έν•œ λͺ¨λ“  λͺ…령은 μ—¬μ „νžˆ μž‘λ™ν•˜μ§€λ§Œ, λ³΅μ‚¬λœ 슀크립트λ₯Ό κ°€λ¦¬ν‚€λ―€λ‘œ 이λ₯Ό μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ‹œμ λΆ€ν„°λŠ” 슀슀둜 관리해야 ν•©λ‹ˆλ‹€.

ejectλ₯Ό μ‚¬μš©ν•  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€. νλ ˆμ΄νŒ…λœ κΈ°λŠ₯ μ„ΈνŠΈλŠ” μ†Œκ·œλͺ¨ 및 μ€‘κ·œλͺ¨ 배포에 μ ν•©ν•˜λ©°, 이 κΈ°λŠ₯을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€λŠ” 압박감을 λŠλΌμ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ€€λΉ„κ°€ λ˜μ—ˆμ„ λ•Œ μ‚¬μš©μž 지정할 수 μ—†λ‹€λ©΄ 이 도ꡬ가 μœ μš©ν•˜μ§€ μ•Šλ‹€λŠ” 점을 μ΄ν•΄ν•©λ‹ˆλ‹€.

3. 🀝 Code Convention


3.1 βœ“ File Naming

  • 파일 이름: μΌ€λ°₯ μΌ€μ΄μŠ€(kebab-case)
  • μ»΄ν¬λ„ŒνŠΈ 파일 이름: 파슀칼 μΌ€μ΄μŠ€(PascalCase)
  • ν•¨μˆ˜ 및 λ³€μˆ˜ 이름: 카멜 μΌ€μ΄μŠ€(camelCase)

3.2 βœ“ μΈν„°νŽ˜μ΄μŠ€ 이름에 λͺ…사/ν˜•μš©μ‚¬ μ‚¬μš© [interface-noun-adj]

νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ 경우 μΈν„°νŽ˜μ΄μŠ€(interface)의 이름은 λͺ…사/λͺ…μ‚¬μ ˆ ν˜Ήμ€ ν˜•μš©μ‚¬/ν˜•μš©μ‚¬μ ˆλ‘œ μ§“λŠ”λ‹€.

3.3 βœ“ 클래슀 이름에 λͺ…사 μ‚¬μš© [class-noun]

클래슀 이름은 λͺ…μ‚¬λ‚˜ λͺ…μ‚¬μ ˆλ‘œ μ§“λŠ”λ‹€.

3.4 βœ“ ν•¨μˆ˜ 이름은 동사/μ „μΉ˜μ‚¬λ‘œ μ‹œμž‘ [function-verb-preposition]

ν•¨μˆ˜λͺ…은 기본적으둜 λ™μ‚¬λ‘œ μ‹œμž‘ν•œλ‹€. λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ μ „ν™˜ν•˜λŠ” ν•¨μˆ˜μ—μ„œλŠ” μ „μΉ˜μ‚¬λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

3.5 βœ“ μƒμˆ˜λŠ” λŒ€λ¬Έμžμ™€ μ–Έλ”μŠ€μ½”μ–΄λ‘œ ꡬ성 [constant_uppercase]

μƒμˆ˜ 이름은 λŒ€λ¬Έμžλ‘œ μž‘μ„±ν•˜λ©°, λ³΅ν•©μ–΄λŠ” μ–Έλ”μŠ€μ½”μ–΄ '_'λ₯Ό μ‚¬μš©ν•˜μ—¬ 단어λ₯Ό κ΅¬λΆ„ν•œλ‹€.

3.6 βœ“ λ³€μˆ˜μ— μ†Œλ¬Έμž μΉ΄λ©œν‘œκΈ°λ²• 적용 [var-lower-camelcase]

μƒμˆ˜κ°€ μ•„λ‹Œ λ³€μˆ˜μ—λŠ” μ†Œλ¬Έμž μΉ΄λ©œν‘œκΈ°λ²•(Lower camel case)을 μ‚¬μš©ν•œλ‹€.

3.7 βœ“ μž„μ‹œ λ³€μˆ˜ μ™Έμ—λŠ” 1 κΈ€μž 이름 μ‚¬μš© κΈˆμ§€ [avoid-1-char-var]

ν•¨μˆ˜ λ²”μœ„ μ΄μƒμ˜ 생λͺ… μ£ΌκΈ°λ₯Ό κ°€μ§€λŠ” λ³€μˆ˜μ—λŠ” 1κΈ€μžλ‘œ 된 이름을 쓰지 μ•ŠλŠ”λ‹€. 반볡문의 μΈλ±μŠ€λ‚˜ ν™”μ‚΄ν‘œ ν•¨μˆ˜μ˜ νŒŒλΌλ―Έν„° λ“± 짧은 λ²”μœ„μ˜ μž„μ‹œ λ³€μˆ˜μ—λŠ” κ΄€λ‘€μ μœΌλ‘œ 1κΈ€μž λ³€μˆ˜λͺ…을 μ‚¬μš©ν•  수 μžˆλ‹€.

μ˜ˆμ‹œ

// File: my-component.js
import React, { useState } from 'react';

const MyComponent = () => {
  const [count, setCount] = useState(0);

  const handleClick = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={handleClick}>Increment</button>
    </div>
  );
};

export default MyComponent;

μΆ”κ°€ μ„€λͺ…

  • 파일 이름: μ»΄ν¬λ„ŒνŠΈ 파일 이름은 MyComponent.js와 같이 파슀칼 μΌ€μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜κ³ , 일반 파일 이름은 my-component.js와 같이 μΌ€λ°₯ μΌ€μ΄μŠ€λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • ν•¨μˆ˜ 및 λ³€μˆ˜ 이름: handleClickκ³Ό 같이 카멜 μΌ€μ΄μŠ€λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • μƒμˆ˜ 이름: μƒμˆ˜λŠ” API_URLκ³Ό 같이 λŒ€λ¬Έμžμ™€ μ–Έλ”μŠ€μ½”μ–΄λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • μž„μ‹œ λ³€μˆ˜: 반볡문 μΈλ±μŠ€λ‚˜ ν™”μ‚΄ν‘œ ν•¨μˆ˜μ˜ νŒŒλΌλ―Έν„°λ‘œ μ‚¬μš©λ˜λŠ” κ²½μš°μ—λ§Œ i와 같은 1κΈ€μž 이름을 μ‚¬μš©ν•©λ‹ˆλ‹€.

4. 🀝 Git Convention


4.1 Issue

λͺ¨λ“  μž‘μ—…μ˜ λ‹¨μœ„λŠ” github에 μƒμ„±λœ Issueλ₯Ό κΈ°μ€€μœΌλ‘œ ν•©λ‹ˆλ‹€.

Issue의 λ³Όλ₯¨μ€ μ΅œμ†Œ ν•˜λ‚˜μ˜ κΈ°λŠ₯으둜 ν•©λ‹ˆλ‹€.

ν•˜λ‚˜μ˜ 이슈λ₯Ό λ§ˆλ¬΄λ¦¬ν•˜κΈ° μ „μ—λŠ” νŠΉλ³„ν•œ 상황이 μ•„λ‹Œ 이상 λ‹€λ₯Έ μž‘μ—…μ— λŒ€ν•œ 이슈λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

4.2 PR (Pull Request)

Issue ≀ PR

ν•˜λ‚˜μ˜ μ΄μŠˆμ— λŒ€ν•΄μ„œ λ°˜λ“œμ‹œ ν•˜λ‚˜μ˜ PR이 μ—΄λ €μ•Όν•˜λŠ” 건 μ•„λ‹™λ‹ˆλ‹€.

μ›ν™œν•œ μ½”λ“œλ¦¬λ·°μ™€ 리뷰에 λŒ€ν•œ λ‚΄μš©μ„ λ°˜μ˜ν•˜κΈ° μœ„ν•΄μ„œ PR은 3개의 commit을 λ„˜μ–΄κ°€μ§€ μ•Šμ•„μ•Όν•©λ‹ˆλ‹€.

ν•˜λ‚˜μ˜ PR에 3개 μ΄μƒμ˜ File ChangeλŠ” μ§€μ–‘ν•©λ‹ˆλ‹€.

5. Commit


컀밋 ꡬ뢄 μ„€λͺ…
Feature (Feature) κ°œμ„  λ˜λŠ” κΈ°λŠ₯ μΆ”κ°€
Bug (Bug Fix) 버그 μˆ˜μ •
Doc (Documentation) λ¬Έμ„œ μž‘μ—…
Test (Test) ν…ŒμŠ€νŠΈ μΆ”κ°€/μˆ˜μ •
Build (Build) λΉŒλ“œ ν”„λ‘œμ„ΈμŠ€ κ΄€λ ¨ μˆ˜μ •(yml)
Performance (Performance) 속도 κ°œμ„ 
Refactor (Cleanup) μ½”λ“œ 정리/λ¦¬νŒ©ν† λ§
  • μ΄μŠˆλ²ˆν˜Έμ™€ ν•¨κ»˜ 컀밋 λ‚΄μš©μ„ μ λŠ”λ‹€.
  • μ˜ˆμ‹œ : [#1] feataure : ~

About

πŸ“¦ 2024 μ†Œν”„νŠΈμ›¨μ–΄κ³΅ν•™ μΊ‘μŠ€ν†€ λ””μžμΈ, λ§›μžˆλŠ” 재고(Tasty-Inventory)νŒ€μ˜ ν”„λ‘ νŠΈμ—”λ“œ λ ˆν¬μ§€ν† λ¦¬μž…λ‹ˆλ‹€

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published