# 빌드 설정

- CRA
  - 장점: CRA가 오래돼서 비교적 대중화되어있음.
  - 단점: vite에 비해 느림.
- vite
  - 장점: 경험이 있다. 속도에 이점이 있음.
  - 단점: CRA에 비해 대중화되어있지 않음.

## 결론

- vite를 사용하기로 결정.

# 패키지 설정

- npm
  - 장점: 경험이 있다. 대중화되어 커뮤니티가 활성화. 지원하는 기능이 많음.
  - 단점: pnpm에 비해 느림.
- pnpm
  - 장점: npm에 비해 빠름.
  - 단점: npm에 비해 대중화되어있지 않음.

## 결론

- npm을 사용하기로 결정.

# 스타일링

- scss
  - 장점
    - 강의가 있다.
    - 재사용면에서 유리.
    - 별도의 파일로 관리가 가능.
    - 한번 의견을 통합하면 그 이후 수월할 수 있음.
  - 단점
    - 파일 분리에 대한 분기점 의견 통합이 별도로 필요.
    - 커뮤니티 활성화가 비교적 떨어짐.
- styled-component
  - 장점
    - css의 본질에 변화가 없음.
    - 다른 스타일링은 경험이 있기 떄문에 학습을 위해 하는 것이 좋을수 있음.
  - 단점: 컴포넌트 분리에 용이하지 않다. 인라인 가독성이 낮아짐.
- tailwind
  - 장점: 컴포넌트 분리에 용이.
  - 단점: 중복 문제가 발생.

## 결론

- styled-component를 사용하기로 결정.

# 상태 관리

- redux toolkit
  - 장점
    - 비교적 보일러 플레이트가 낮음.
    - 짜여진 틀이 있다는 것이 오류를 발견할 수 있는 이점.
  - 단점: 오류가 발생했을 떄 해결이 어려울 수 있다는 단점.
- recoil
  - 장점: 사용하기 쉬움.
  - 단점: redux가 학습과 취업에 유리.
- Context API
  - 장점: 프로젝트 규모가 작기 떄문에 redux와 같은 무거운 설치가 필요없음.
  - 단점: redux가 학습과 취업에 유리.

## 결론

- redux toolkit을 사용하기로 결정.

# 네트워크

- axios
  - 장점
    - 서버리스 환경에서 사용하기 좋음.
    - 이미 경험이 있음.
  - 단점: fetch에 비해 무거움.

## 결론

- axios를 사용하기로 결정.

# 배포

- Vecel
  - 장점: 이미 경험이 있음.
  - 단점: netlify에 비해 대중화되어있지 않음.

## 결론

- Vecel을 사용하기로 결정.

# 깃 관리

- Git Flow
  - 장점: 충돌에 대한 방안을 마련할 수 있음.
  - 단점: 너무 복잡한 규칙때문에 처음 깃관리를 하는 사람들에게는 어려울 수 있음.
- Github Flow
  - 장점: 간단한 규칙이기 때문에 처음 깃관리를 하는 사람들에게도 쉬움.
  - 단점: 충돌에 대한 방안을 마련할 수 없음.

## 결론

- Git Flow를 사용하기로 결정.