여행 일정 계획 및 공유 플랫폼의 백엔드 서버입니다.
- 여행 계획: 여행 일정 생성, 수정, 삭제
- 일정 관리: 세부 일정(Itinerary) 및 예약 정보 관리
- 장소 검색: Google Places API 연동
- 커뮤니티: 여행 후기 게시판, 댓글
- 리소스 관리: 공지사항, 배너 관리
- 인증/인가: JWT 기반 인증, 카카오/네이버/구글 소셜 로그인
| 구분 | 기술 |
|---|---|
| Language | Java 21 |
| Framework | Spring Boot 3.x, Spring Security, Spring Data JPA |
| Database | MySQL 8.0 |
| Storage | 서버 로컬 디스크 (nginx 정적 서빙) |
| Infra | Docker, Jenkins (home-server에서 중앙 관리) |
| Test | JUnit 5, Mockito, H2 (테스트 DB) |
| Docs | Swagger (SpringDoc OpenAPI) |
jandi_plan_backend/
├── src/main/java/com/jandi/plan_backend/
│ ├── commu/ # 커뮤니티 (게시판, 댓글)
│ ├── tripPlan/ # 여행 계획
│ ├── googlePlace/ # Google Places 연동
│ ├── image/ # 이미지 업로드
│ ├── resource/ # 공지사항, 배너
│ ├── user/ # 사용자 관리
│ ├── socialLogin/ # 소셜 로그인
│ ├── config/ # 설정
│ ├── security/ # 보안 설정
│ ├── util/ # 유틸리티
│ └── global/ # 공통 코드
├── src/test/ # 테스트 코드
├── build.gradle # Gradle 빌드 설정
├── Dockerfile # Docker 이미지 빌드
└── README.md
- Java 21
- MySQL 8.0
# 1. 환경변수 설정
cp src/main/resources/application.properties.example src/main/resources/application.properties
# application.properties 파일에 DB, 이미지 저장 경로(image.storage-path), OAuth 정보 입력
# 2. 빌드
./gradlew clean build -x test
# 3. 실행
./gradlew bootRun
# 또는 JAR 직접 실행
java -jar build/libs/jandi_plan_backend-0.0.1-SNAPSHOT.jar접속 URL
- API 서버: http://localhost:8080
- Swagger UI: http://localhost:8080/swagger-ui.html
# 전체 테스트 실행
./gradlew test
# 특정 테스트 클래스 실행
./gradlew test --tests "com.jandi.plan_backend.user.service.UserServiceTest"
# 특정 테스트 메서드 실행
./gradlew test --tests "com.jandi.plan_backend.user.service.UserServiceTest.createUser_Success"
# 테스트 + 상세 로그
./gradlew test --info
# 빌드 캐시 무시하고 재실행
./gradlew clean test# 1. 환경변수 설정
cp src/main/resources/application.properties.example src/main/resources/application.properties
# application.properties 수정
# 2. 이미지 빌드
docker build -t jandi-plan:local .
# 3. 컨테이너 실행
docker run -d \
--name jandi-plan \
-p 8080:8080 \
jandi-plan:local
# 4. 로그 확인
docker logs -f jandi-plan
# 5. 컨테이너 중지 및 삭제
docker stop jandi-plan && docker rm jandi-plan참고: Docker 빌드 시
application.properties파일이 이미지에 포함됩니다.
# 1. 테스트용 이미지 빌드
docker build --target test -t jandi-plan:test .
# 2. 테스트 실행
docker run --rm jandi-plan:test ./gradlew test
# 또는 실행 중인 컨테이너에서 테스트
docker exec jandi-plan ./gradlew test# 1. GHCR 로그인
echo $GITHUB_TOKEN | docker login ghcr.io -u kyj0503 --password-stdin
# 2. application.properties 준비 (example 복사)
cp src/main/resources/application.properties.example src/main/resources/application.properties
# 3. 이미지 빌드
docker build --platform linux/amd64 -t ghcr.io/kyj0503/jandi-plan:latest .
# 4. Push
docker push ghcr.io/kyj0503/jandi-plan:latest파이프라인 정의는 home-server/cicd/jenkins/pipeline/jandi-plan/에서 관리합니다.
Jenkins의 jandi-plan Job을 수동 실행하고 APP_ENV를 선택합니다.
dev:dev브랜치를 빌드해:dev이미지로 Pushprod:main브랜치를 빌드해:latest이미지로 Push한 뒤 배포 및 헬스 체크
태그(스코프): 제목 (50자 내외)
- 본문 (선택 사항)
| 스코프 | 설명 |
|---|---|
be |
Backend 관련 코드 |
infra |
배포, Docker, CI/CD 등 |
| 태그 | 설명 | 예시 |
|---|---|---|
feat |
새로운 기능 추가 | API 개발 |
fix |
버그 수정 | 로직 오류 수정 |
docs |
문서 수정 | README, Swagger |
style |
코드 포맷팅 | 들여쓰기 정렬 |
refactor |
코드 리팩토링 | 구조 개선 |
test |
테스트 코드 | 테스트 추가/수정 |
chore |
기타 잡무 | 빌드 설정 |
feat(be): 여행 일정 공유 API 구현
fix(be): 소셜 로그인 토큰 갱신 오류 수정
docs(be): Swagger API 문서 업데이트
chore(infra): Dockerfile 캐시 최적화
- Jenkins 파이프라인 정의와 운영 환경 배포는 home-server 리포지토리에서 중앙 관리
- 환경변수 및 시크릿:
home-server/config/jandi-plan/