Skip to content

Architecture

EunHyo Park edited this page Jun 11, 2025 · 2 revisions

🏗️ 프로젝트 구조 및 개발 흐름

🛠️ 기술 스택 요약

분류 기술
Backend Spring Boot, JPA, MySQL, OAuth (Kakao), EC2/RDS
AI OpenAI GPT API 기반 코멘트 및 일기 생성
기타 GitHub Actions, Netlify, Swagger, Notion, Figma

📁 프로젝트 구조 설명

📦src
 ┣ 📂main
 ┃ ┣ 📂java
 ┃ ┃  ┗ 📂com.openketchupsource.soulmate
 ┃ ┃     ┣ 📂apiPayload
 ┃ ┃     ┃  ┣ 📂exception
 ┃ ┃     ┃  ┃  ┣ 📂handler
 ┃ ┃     ┃  ┃  ┃  ┣ 📜DiaryHandler.java
 ┃ ┃     ┃  ┃  ┃  ┣ 📜LoginHandler.java
 ┃ ┃     ┃  ┃  ┃  ┣ 📜SettingHandler.java
 ┃ ┃     ┃  ┃  ┣ 📜ExceptionAdvice.java
 ┃ ┃     ┃  ┃  ┗ 📜GeneralException.java
 ┃ ┃     ┃  ┃
 ┃ ┃     ┃  ┣ 📂form
 ┃ ┃     ┃  ┃  ┣ 📂status
 ┃ ┃     ┃  ┃  ┃  ┣ 📜ErrorStatus.java
 ┃ ┃     ┃  ┃  ┃  ┗ 📜SuccessStatus.java
 ┃ ┃     ┃  ┃  ┣ 📜BaseCode.java
 ┃ ┃     ┃  ┃  ┣ 📜ReasonDTO.java
 ┃ ┃     ┃  ┗ 📜ApiResponse.java
 ┃ ┃     ┃
 ┃ ┃     ┣ 📂auth
 ┃ ┃     ┃  ┣ 📂jwt
 ┃ ┃     ┃  ┃  ┣ 📜JwtTokenProvider.java
 ┃ ┃     ┃  ┃  ┗ 📜JwtValidationType.java
 ┃ ┃     ┃  ┣ 📜JwtAuthenticationFilter.java
 ┃ ┃     ┃  ┣ 📜MemberAuthentication.java
 ┃ ┃     ┃  ┗ 📜PrincipalHandler.java
 ┃ ┃     ┃
 ┃ ┃     ┣ 📂config 
 ┃ ┃     ┃  ┣ 📜SecurityConfig.java
 ┃ ┃     ┃  ┗ 📜WebConfig.java
 ┃ ┃     ┃
 ┃ ┃     ┣ 📂controller 
 ┃ ┃     ┃  ┣ 📂chat
 ┃ ┃     ┃  ┃  ┗ 📜ChatController.java
 ┃ ┃     ┃  ┣ 📂diary
 ┃ ┃     ┃  ┃  ┣ 📜CommentController.java
 ┃ ┃     ┃  ┃  ┣ 📜DiaryController.java
 ┃ ┃     ┃  ┃  ┗ 📜HashTagController.java
 ┃ ┃     ┃  ┣ 📂login
 ┃ ┃     ┃  ┃  ┣ 📜AuthCheckController.java
 ┃ ┃     ┃  ┃  ┣ 📜HealthCheckController.java
 ┃ ┃     ┃  ┃  ┗ 📜KakaoLoginController.java
 ┃ ┃     ┃  ┣ 📂member
 ┃ ┃     ┃  ┃  ┗ 📜SettingController.java
 ┃ ┃     ┃
 ┃ ┃     ┣ 📂converter
 ┃ ┃     ┃  ┗ 📜CommentConverter.java
 ┃ ┃     ┃
 ┃ ┃     ┣ 📂domain
 ┃ ┃     ┃  ┣ 📂common
 ┃ ┃     ┃  ┃  ┗ 📜BaseTimeEntity.java
 ┃ ┃     ┃  ┣ 📂mapping
 ┃ ┃     ┃  ┃  ┗ 📜DiaryToHashtag.java
 ┃ ┃     ┃  ┣ 📜Character.java
 ┃ ┃     ┃  ┣ 📜Chat.java
 ┃ ┃     ┃  ┣ 📜ChatMessage.java
 ┃ ┃     ┃  ┣ 📜Comment.java
 ┃ ┃     ┃  ┣ 📜Diary.java
 ┃ ┃     ┃  ┣ 📜HashTag.java
 ┃ ┃     ┃  ┗ 📜Member.java
 ┃ ┃     ┃
 ┃ ┃     ┣ 📂dto
 ┃ ┃     ┃  ┣ 📂chat
 ┃ ┃     ┃  ┃  ┣ 📜ChatInitResponseDto.java
 ┃ ┃     ┃  ┃  ┣ 📜ChatMessageDto.java
 ┃ ┃     ┃  ┃  ┣ 📜ChatReply2ClientDto.java
 ┃ ┃     ┃  ┃  ┣ 📜ChatRequestDto.java
 ┃ ┃     ┃  ┃  ┗ 📜ChatResponseDto.java
 ┃ ┃     ┃  ┣ 📂diary
 ┃ ┃     ┃  ┃  ┣ 📜ClientDiaryCreateRequest.java
 ┃ ┃     ┃  ┃  ┣ 📜ClientDiaryResponse.java
 ┃ ┃     ┃  ┃  ┣ 📜ClientDiaryUpdateRequest.java
 ┃ ┃     ┃  ┃  ┣ 📜ClientGptDiaryCreateRequest.java
 ┃ ┃     ┃  ┃  ┣ 📜CommentListResponse.java
 ┃ ┃     ┃  ┃  ┣ 📜CommentRequest.java
 ┃ ┃     ┃  ┃  ┣ 📜CommentResponse.java
 ┃ ┃     ┃  ┃  ┣ 📜DiaryListResponse.java
 ┃ ┃     ┃  ┃  ┣ 📜DiaryResponse.java
 ┃ ┃     ┃  ┃  ┣ 📜GptDiaryPrompt.java
 ┃ ┃     ┃  ┃  ┣ 📜GptDiaryResponse.java
 ┃ ┃     ┃  ┃  ┣ 📜HashTagDTO.java
 ┃ ┃     ┃  ┃  ┗ 📜StoredCommentResponse.java
 ┃ ┃     ┃  ┣ 📂kakao
 ┃ ┃     ┃  ┃  ┣ 📜SocialLoginRequest.java
 ┃ ┃     ┃  ┃  ┗ 📜SocialLoginResponse.java
 ┃ ┃     ┃  ┗ 📜TokenResponse.java
 ┃ ┃     ┃
 ┃ ┃     ┣ 📂external.oauth
 ┃ ┃     ┃  ┣ 📂kakao
 ┃ ┃     ┃  ┃  ┣  📂clientInfo
 ┃ ┃     ┃  ┃  ┃  ┣ 📜KakaoAccount.java
 ┃ ┃     ┃  ┃  ┃  ┗ 📜Profile.java
 ┃ ┃     ┃  ┃  ┣  📂request
 ┃ ┃     ┃  ┃  ┃  ┣ 📜KakaoInfoRequest.java
 ┃ ┃     ┃  ┃  ┃  ┗ 📜KakaoTokenRequest.java
 ┃ ┃     ┃  ┃  ┣  📂response
 ┃ ┃     ┃  ┃  ┃  ┣ 📜KakaoInfoResponse.java
 ┃ ┃     ┃  ┃  ┃  ┗ 📜KakaoTokenResponse.java
 ┃ ┃     ┃  ┗ 📜KakaoProperties.java
 ┃ ┃     ┃
 ┃ ┃     ┣ 📂repository
 ┃ ┃     ┃  ┣ 📂character
 ┃ ┃     ┃  ┃  ┗ 📜CharacterRepository.java
 ┃ ┃     ┃  ┣ 📂chat
 ┃ ┃     ┃  ┃  ┣ 📜ChatMessageRepository.java
 ┃ ┃     ┃  ┃  ┗ 📜ChatRepository.java
 ┃ ┃     ┃  ┣ 📂diary
 ┃ ┃     ┃  ┃  ┣ 📜CommentRepository.java
 ┃ ┃     ┃  ┃  ┣ 📜DiaryRepository.java
 ┃ ┃     ┃  ┃  ┗ 📜HashTagRepository.java
 ┃ ┃     ┃  ┗ 📂member
 ┃ ┃     ┃     ┗ 📜MemberRepository.java
 ┃ ┃     ┃
 ┃ ┃     ┣ 📂service
 ┃ ┃     ┃  ┣ 📂chat
 ┃ ┃     ┃  ┃  ┗ 📜ChatAIService.java
 ┃ ┃     ┃  ┣ 📂diary
 ┃ ┃     ┃  ┃  ┣ 📜CommentService.java
 ┃ ┃     ┃  ┃  ┗ 📜DiaryService.java
 ┃ ┃     ┃  ┣ 📂kakao
 ┃ ┃     ┃  ┃  ┣ 📜KakaoLoginService.java
 ┃ ┃     ┃  ┃  ┗ 📜LoginService.java
 ┃ ┃     ┃  ┗ 📂member
 ┃ ┃     ┃     ┣ 📜MemberService.java
 ┃ ┃     ┃     ┗ 📜SettingService.java
 ┃ ┃     ┃
 ┃ ┃     ┗ 📜SoulmateApplication.java
 ┃ ┃     
 ┃ ┃
 ┃ ┗ 📂resources
 ┃    ┣ 📜application.properties
 ┃    ┗ 📜application.yml 
 ┗ 📂test.java.com.openketchupsource.soulmate
    ┣ 📂service.kakao
    ┃  ┗ 📜LoginService.Test
    ┃
    ┗ 📜SoulmateApplicationTests

📦 주요 라이브러리 및 설정 요약

🔧 주요 의존성 (dependencies)

라이브러리 설명
spring-boot-starter-web REST API 서버 구축
spring-boot-starter-data-jpa JPA 기반 ORM 처리
spring-boot-starter-security 인증 및 보안 설정
spring-boot-starter-validation @Valid 기반 입력값 검증
lombok 반복 코드 제거 (getter/setter 등)
mysql-connector-j MySQL DB 연결
spring-cloud-starter-openfeign 외부 API 호출 (OpenAI, Kakao 등)
jjwt (api, impl, jackson) JWT 인증 토큰 발급/검증
jackson-databind JSON 직렬화/역직렬화

🧪 테스트 및 개발용 의존성

라이브러리 설명
spring-boot-starter-test 단위 테스트 (JUnit)
spring-security-test 인증 테스트 지원
h2 로컬 개발용 인메모리 DB

Clone this wiki locally