셀프벨 백엔드 리포지토리입니다
모든 기능 개발은 다음 흐름을 따릅니다:
- 개발하고자 하는 기능에 대한 이슈를 등록하여 번호를 발급합니다.
- dev 브랜치로부터 분기하여 이슈 번호를 사용해 이름을 붙인 feat 브랜치를 만든 후 작업합니다.
- 작업이 완료되면 dev 브랜치에 풀 요청(Pull Request)을 작성하고, 팀원의 동의를 얻으면 병합합니다.
- 초기 세팅
- 원하는 로컬 경로에 클론
$ git clone [email protected]:Selfbell-org/Selfbell_BE.git
- Git Flow 브랜치 전략
-
[
main(배포)-dev(통합)-feat(개발)·fix(수정)] 세 단계 -
개발 완료 시
PR로dev에 병합 → 주기적으로release/x.y로 묶어QA후main에 병합 -
브랜치 네이밍:
feat/#<이슈 번호>-<간단한 설명> # 예시: feat/#1-google-login
- 기능 개발
# 1️⃣ 최신 통합 브랜치 받기 $ git checkout dev $ git pull origin dev # 2️⃣ 기능 브랜치 생성 $ git checkout -b feat/#<이슈 번호>-<간단 설명> # 3️⃣ 작업 & 단위 커밋 $ git commit -m "feat: kakao oauth callback (#<이슈 번호>)"
- 커밋 규칙:
type: subjectfeat|fix|docs|refactor|test|chore|rename
- PR 작성 및 리뷰 규칙
- PR을 생성해서 양식에 맞게 작성
feat: 일반 로그인 API 구현
- 개발 중이라도 일찍 공유해 피드백 주고받기
- 제안(코드
suggestion)→ 대안 함께 제시하기
- 제안(코드
- 파일
10개 미만으로 올리기 - 리뷰어
2명Approve→Merge commit방식으로 병합
- dev 최신화 & 추가 작업
$ git checkout dev $ git pull origin dev # dev 최신 상태 반영 $ git branch -d feat/<name> # 로컬 브랜치 정리
- 새 기능 구현 시 항상 최신 dev 기준으로 새 브랜치를 파서 충돌 최소화.
운영 언어: Java17
빌드 도구: Gradle
프레임워크: Spring Boot 3.x
- 네이밍
- 주로
camelCase Boolean메서드는is/has/can패턴 사용—예:isActive(),hasRole().
- 주로
- 형식
- 들여쓰기:
4 spaces=tap - 행 길이:
120자 제한 - 주석:
//→ 짧은 설명,/* … */→ 블록
- 들여쓰기:
- 메서드, 매개변수
- CRUD 접두어:
create, retrieve, update, delete
- CRUD 접두어:
- 엔티티
@Table(name = "users")등 명시적 테이블명 지정. 예약어는 복수형으로 회피(order→orders).@Column(nullable = false)를 필수 필드에만 기재- 시간 컬럼은 Spring Data Auditing
@CreatedDate private LocalDateTime createdAt; @LastModifiedDate private LocalDateTime updatedAt;
- DTO & 매핑
- DTO는 기본
class로 (recordx) - 변환 책임을 DTO로 위임할 것
- DTO 네이밍:
UserCreateRequest,UserSummaryResponse,PaymentClientResponse-dto 금지
- DTO는 기본
- Validation
- Controller 단에서
@Valid활용
- Controller 단에서
- 메서드 순서
public맨 뒤private메서드 넣을 것
- 어노테이션 정렬
- 스프링 핵심(
@Service,@Configuration) - 트랜잭션 보안
- 검증/로그
- Lombok (
@Getter,@Builder) - 가장 하단
- 스프링 핵심(
- 제어 흐름 & 복잡도
- 중첩
depth는2이하,early return- 불필요한
else는 제거하기
- 불필요한
- 중첩
com.selfbell
member // entity 기준으로 패키지 분리
- controller
- service
- dto
- entity
- repository
- exception
global
- config
- exception