이 레포지토리는 React + Typescript 기반으로 제작된 대구소프트웨어마이스터고 질의응답 웹 사이트입니다.
아래에는 이 프로젝트의 사용법에 관해 설명되어 있습니다.
npm install
프로젝트 루트 폴더에 .env 파일을 만들어 서버 주소를 설정하세요.
반드시 .gitignore에 .env가 추가되어 있는지 확인하세요.
Vite 기반으로 작성해 주세요. (VITE_VARIABLE_NAME 형식)
VITE_SERVER_URL = 'https://server.url'
src/
├── app/ # App.tsx, router.tsx 등 전역 Provider
├── api/ # Auth API 등 전역으로 사용되는 API
├── assets/ a 이미지 등 부가 요소
├── components/ a 공통으로 사용되는 컴포넌트
├── constants/ a 상수(카테고리 등)
├── pages/ a 페이지
└── utils/ a cookie등 공용 로직
src/
├── components/
│ └── {feature}/ # 도메인/기능별 컴포넌트
│ ├── index.tsx
│ └── style.ts
├── pages/
│ └── {route}/ # 라우팅 단위 페이지
│ ├── index.tsx
│ ├── style.ts
│ └── {route}/ # 하위 라우터 (상세 페이지 등)
│ ├── index.tsx
│ └── style.ts
└── utils/
└── {feature}/
└── {util_name}.ts
- 한글로 작성한다.
JSDoc(/** **/)형식의 주석 블록으로 작성한다.- 무엇을 왜 하는가에 대한 내용을 짧고 간결하게 작성한다.
- 가능한 경우 예시를 작성한다.
- Tag를 사용해 변수의 의미, 반환 값, 예제 등을 작성한다.
@param : 매개변수가 무엇인지 설명
@returns : 이 함수가 무엇을 반환하는지 설명
@example : 실제 사용 예제를 설명
/**
* 두 숫자를 더한 값을 반환합니다.
*
* @param a - 첫 번째 더할 숫자
* @param b - 두 번째 더할 숫자
*
* @returns 두 숫자의 합계 (number)
*
* @example
* const result = add(10, 20);
* console.log(result); // 30
*/
- 파일 당 컴포넌트는
1개. - 파일, 컴포넌트명은
UpperCamelCase로 작성. - 들여쓰기 단위는
2칸. - 변수 선언은 const 사용 및
lowerCamelCase사용.
- Route 폴더는
UpperCamelCase로작성. - 컴포넌트 파일은 {feature} 폴더 안에
index.tsx생성. - 스타일 파일은
style.ts또는{name}.style.ts로 작성.
- 각 페이지 파일은
src/pages/{route}/index.tsx에 위치
styled-components기반으로 작성합니다.- 색상, 폰트 크기 등은
theme또는디자인 토큰에서 불러와 사용합니다.하드코딩은 금지됩니다. - 컴포넌트 이름은
UpperCamelCase로 작성합니다. - 어느 화면 비율, 크기에서도 되도록 깨지지 않도록 스타일링 합니다.
- 페이지 간 컴포넌트 크기 차이가 최소화되도록 신경 써서 스타일링 합니다.