diff --git a/BCryptHashGenerator.java b/BCryptHashGenerator.java deleted file mode 100644 index 4320617a..00000000 --- a/BCryptHashGenerator.java +++ /dev/null @@ -1,10 +0,0 @@ -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; - -public class BCryptHashGenerator { - public static void main(String[] args) { - BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); - String password = "Admin123!@"; - String hash = encoder.encode(password); - System.out.println(hash); - } -} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 5f95f0ec..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,492 +0,0 @@ -# Contributing to Build-Up Backend - -Build-Up 백엔드 프로젝트에 기여해주셔서 감사합니다! 이 문서는 프로젝트에 기여하는 방법과 개발 워크플로우를 설명합니다. - ---- - -## 📋 목차 - -1. [시작하기](#시작하기) -2. [개발 워크플로우](#개발-워크플로우) -3. [브랜치 전략](#브랜치-전략) -4. [커밋 컨벤션](#커밋-컨벤션) -5. [코드 스타일](#코드-스타일) -6. [테스트 작성](#테스트-작성) -7. [Pull Request 프로세스](#pull-request-프로세스) -8. [코드 리뷰](#코드-리뷰) -9. [문서화](#문서화) -10. [도움말](#도움말) - ---- - -## 🚀 개발 환경 세팅 - -### 1. 사전 준비사항 - -- Java 21 이상 -- IntelliJ IDEA (권장) 또는 Eclipse -- Docker Desktop -- MySQL 클라이언트 (선택사항) -- Git - -### 2. 프로젝트 클론 - -```bash -# 프로젝트 클론 -git clone -cd BU-Server - -# develop 브랜치로 이동 (메인 개발 브랜치) -git checkout develop -``` - -### 3. 환경변수 설정 - -```bash -# .env.example을 복사하여 .env 생성 -cp .env.example .env - -# .env 파일 편집 (필요시) -# 로컬 개발 환경에서는 기본값 사용 가능 -``` - -### 4. 개발 환경 실행 - -**방법 1: 개발 스크립트 사용 (권장)** - -```bash -# 스크립트 실행 권한 부여 (최초 1회) -chmod +x ./start-dev.sh - -# 개발 환경 시작 -./start-dev.sh -``` - -**방법 2: IntelliJ에서 직접 실행** - -1. IntelliJ에서 프로젝트 열기 -2. Active Profile을 `dev`로 설정 -3. `BuildupApplication` 실행 - -### 5. 접속 확인 - -- 애플리케이션: http://localhost:8080/api -- Swagger UI: http://localhost:8080/api/swagger-ui/index.html -- phpMyAdmin: http://localhost:8081 - ---- - -## 🌿 Git 워크플로우 - -### 브랜치 전략 - -``` -main (또는 master) - └── develop (메인 개발 브랜치) - ├── feature/JIRA-123-user-auth (기능 개발) - ├── feature/JIRA-124-employee-list - ├── bugfix/JIRA-125-login-error (버그 수정) - └── hotfix/JIRA-126-critical-fix (긴급 수정) -``` - -### 브랜치 네이밍 규칙 - -| 타입 | 형식 | 예시 | -|------|------|------| -| 기능 개발 | `feature/JIRA-번호-간단한설명` | `feature/JIRA-123-user-auth` | -| 버그 수정 | `bugfix/JIRA-번호-간단한설명` | `bugfix/JIRA-125-login-error` | -| 긴급 수정 | `hotfix/JIRA-번호-간단한설명` | `hotfix/JIRA-126-critical-fix` | - -### 작업 프로세스 - -#### 1. Jira Epic/Story 생성 -- Jira에서 Epic 또는 Story 생성 -- Story를 적절한 크기로 분할 (1-2일 이내 완료 가능한 단위) - -#### 2. GitHub Issue 생성 -- Jira Story를 기반으로 GitHub Issue 생성 -- 제목: `[JIRA-123] 사용자 인증 기능 구현` -- 본문: Jira 링크 및 상세 설명 - -#### 3. 브랜치 생성 및 개발 - -```bash -# develop 브랜치에서 최신 코드 받기 -git checkout develop -git pull origin develop - -# 새 기능 브랜치 생성 -git checkout -b feature/JIRA-123-user-auth - -# 개발 작업 수행... - -# 커밋 (커밋 메시지 규칙 참조) -git add . -git commit -m "feat: [JIRA-123] 사용자 인증 API 구현" - -# 원격 브랜치에 푸시 -git push origin feature/JIRA-123-user-auth -``` - -#### 4. Pull Request 생성 -- GitHub에서 PR 생성 -- PR 템플릿에 따라 작성 -- Reviewer 지정 (팀원) - -#### 5. 코드 리뷰 및 수정 -- 리뷰어는 24시간 이내 리뷰 -- 수정 사항 반영 후 재요청 - -#### 6. 머지 및 브랜치 삭제 -- Approve 받은 후 develop에 머지 -- Squash and Merge 또는 Rebase and Merge 사용 -- 브랜치 삭제 - ---- - -## 💻 코딩 컨벤션 - -### 패키지 구조 - -Domain 중심 구조를 사용합니다: - -``` -com.concrete.buildup/ -├── domain/ -│ └── {domain-name}/ -│ ├── controller/ -│ ├── service/ -│ ├── repository/ -│ ├── dto/ -│ └── entity/ -└── global/ - ├── config/ - ├── exception/ - ├── common/ - └── util/ -``` - -### 네이밍 규칙 - -#### 클래스 -```java -// Controller -public class UserController { } - -// Service -public class UserService { } - -// Repository -public interface UserRepository extends JpaRepository { } - -// DTO -public class UserRequestDto { } -public class UserResponseDto { } - -// Entity -@Entity -public class User { } -``` - -#### 메서드 -```java -// CRUD 메서드 -public UserResponseDto createUser(UserRequestDto request) { } -public UserResponseDto getUserById(Long id) { } -public List getAllUsers() { } -public UserResponseDto updateUser(Long id, UserRequestDto request) { } -public void deleteUser(Long id) { } - -// 조회 메서드 -public List findUsersByName(String name) { } -public Optional findUserByEmail(String email) { } - -// 비즈니스 로직 -public void activateUser(Long userId) { } -public boolean isUserActive(Long userId) { } -``` - -#### 변수 -```java -// camelCase 사용 -private String userName; -private Long userId; -private LocalDateTime createdAt; - -// boolean은 is/has 접두사 -private boolean isActive; -private boolean hasPermission; - -// Collection은 복수형 -private List users; -private Set roles; -``` - -#### 상수 -```java -// UPPER_SNAKE_CASE 사용 -public static final int MAX_RETRY_COUNT = 3; -public static final String DEFAULT_ROLE = "USER"; -``` - -### API 응답 형식 - -모든 API는 `ApiResponse`를 사용합니다: - -```java -// 성공 응답 -// return ResponseEntity.ok(ApiResponse.success(data)); -// return ResponseEntity.ok(ApiResponse.success(data, "조회에 성공했습니다")); - -// 201 Created -// return ResponseEntity - // .status(HttpStatus.CREATED) - // .body(ApiResponse.success(data, "생성되었습니다")); - -// 에러 응답 (GlobalExceptionHandler에서 자동 처리) -// throw new BusinessException(ErrorCode.USER_NOT_FOUND); -``` - -### 어노테이션 순서 - -```java -@RestController -@RequestMapping("/api/users") -@RequiredArgsConstructor -@Slf4j -public class UserController { - - @GetMapping("/{id}") - @Operation(summary = "사용자 조회") - public ResponseEntity> getUser( - @PathVariable Long id - ) { - // ... - } -} -``` - ---- - -## 📝 커밋 메시지 규칙 - -### 형식 - -``` -: [JIRA-번호] - - (선택사항) - -