UMC 9기 내폼리폼의 백엔드 리포지토리입니다.
- Runtime: Node.js(v23.9.0)
- Language: TypeScript(tsc version 5.8.3)
- Framework: Express (v5.2.0)
- API Documentation: TSOA + Swagger UI (v11.6.4)
- Testing: Jest + ts-jest
- Linting: ESLint + Prettier
- Logging: Morgan
myform_reform/
├── src/
│ ├── app.ts # Express 애플리케이션 진입점
│ ├── config/ # 설정 파일
│ │ ├── swagger.json # Swagger 문서
│ │ └── tsoaResponse.ts # TSOA 응답 설정
│ └── routes/ # API 라우트
│ ├── tsoaRoutes.ts # TSOA 생성 라우트
│ └── user/ # 각 도메인 라우트 라우트
│ ├── user.controller.ts
│ ├── user.service.ts
│ ├── user.model.ts
│ └── user.spec.ts
├── jest.config.js # Jest 테스트 설정
├── tsconfig.json # TypeScript 설정
└── package.json
npm test테스트 파일은 다음 위치에 작성합니다:
**/__test__/*.test.ts**/src/routes/**/*.spec.ts
커밋은 3가지 부분으로 이루어집니다.
<type> : <header>
<body>
<footer><type> : 어떤 내용의 커밋인지 선언합니다. 대문자로 시작합니다.
1. Feat : 기능추가 , 삭제 , 변경
2. Fix : 버그 수정
3. Refactor : 코드 구조 변경, 리팩토링
4. Test : 테스트코드 작성
5. Docs : 문서 작성, 변경
6. Etc : 위에 해당하지 않는 여러 사유, 제목에 상세히 명시<header> : 커밋의 제목을 선언합니다. ~~구현, ~~수정 등, 단순하고 명확하게 작성합니다.
eg)
Feat : 비밀번호 암호화 추가
user.service에 비밀번호 hash로직을 추가하였습니다.
Issue#12343가지 부분은 공백으로 구분하여 작성합니다.
- camelCase를 사용합니다.
// ✅ Good
const userName = 'John';
function getUserData() {}
// ❌ Bad
const user_name = 'John';
function GetUserData() {}- PascalCase를 사용합니다.
// ✅ Good
class UserService {}
type UserData = {};
interface FormData {}
// ❌ Bad
class userService {}
type userData = {};
interface formData {}- 함수 이름은 camelCase를 사용합니다.
// ✅ Good
function calculateTotal() {}
const processData = () => {};
// ❌ Bad
function CalculateTotal() {}
const ProcessData = () => {};- var 사용 금지, const 또는 let을 사용합니다.
- 가능한 경우 const를 우선합니다.
// ✅ Good
const count = 10;
let index = 0;
// ❌ Bad
var count = 10;// ✅ Good
const firstName = 'John';
const lastName = 'Doe';
// ❌ Bad
const firstName = 'John',
lastName = 'Doe';- 사용하지 않는 변수는 경고가 발생합니다.
// ❌ Bad
const unusedVariable = 10;- 엄격한 비교 연산자(===, !==)만 사용합니다.
// ✅ Good
if (value === 10) {
}
if (str !== '') {
}
// ❌ Bad
if (value == 10) {
}
if (str != '') {
}ISC