DecodEat은 식품 정보를 분석하고 사용자 맞춤 추천을 제공하는 서비스입니다. 이 프로젝트는 해당 서비스의 백엔드 서버입니다.
| 구분 | 기술 |
|---|---|
| Framework | Spring Boot 3.2.5 |
| Language | Java 17 |
| Build Tool | Gradle 8.7 |
| Database | Spring Data JPA, MYSQL |
| Authentication | Spring Security, JWT, OAuth 2.0 |
| API Documentation | Swagger (Springdoc OpenAPI) |
| Cloud Service | AWS S3 |
| Containerization | Docker, Docker Compose |
| CI/CD | GitHub Actions |
- OAuth 2.0을 연동하여 Kakao 소셜 로그인을 지원합니다.
- Refresh Token을 이용한 토큰 재발급 로직을 구현하여 사용자 편의성을 높였습니다.
- 사용자가 직접 상품 정보를 등록하고, 이미지(원재료, 영양정보표)를 S3에 업로드할 수 있습니다.
- 상품명, 카테고리 등 다양한 조건으로 상품을 검색하고 필터링하는 기능을 제공합니다.
- 상품 상세 정보 조회, 좋아요 기능을 제공합니다.
- 외부 Python 분석 서버와 비동기 통신(WebClient)하여 상품의 영양 정보를 분석합니다.
- 사용자 기반 및 상품 기반의 추천 알고리즘을 통해 개인화된 상품 추천 목록을 제공합니다.
- 사용자는 등록된 상품의 영양 정보나 이미지에 대한 오류를 제보할 수 있습니다.
- 관리자는 제보된 내용을 확인하고, 상품 정보를 수정하거나 제보를 처리할 수 있습니다.
- 표준화된 API 응답 형식을(
ApiResponse) 사용하여 클라이언트와의 통신 효율성을 높였습니다. ErrorStatus를 통해 예외 상황을 체계적으로 관리하고,ExceptionAdvice에서 공통으로 처리합니다.
- Java 17
- Gradle 8.7
- Docker (선택 사항)
-
Git Clone
git clone https://github.com/DecodEat/BE-SpringBoot.git cd BE-SpringBoot -
application.yml설정src/main/resources/경로에application.yml파일을 생성하고 데이터베이스, JWT, OAuth, AWS S3 관련 설정값을 입력해야 합니다. -
애플리케이션 실행
./gradlew bootRun
서버 실행 후, 아래 URL을 통해 API 명세를 확인할 수 있습니다.
- Swagger UI: http://localhost:8080/swagger-ui/index.html
.
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── DecodEat
│ │ │ ├── DecodEatApplication.java
│ │ │ ├── domain # 비즈니스 로직 (하위 도메인으로 분리)
│ │ │ │ ├── products # 상품
│ │ │ │ ├── users # 사용자
│ │ │ │ ├── report # 신고
│ │ │ │ └── refreshToken # 리프레시 토큰
│ │ │ └── global # 공통 모듈
│ │ │ ├── apiPayload # 공통 응답/예외 처리
│ │ │ ├── aws # AWS 관련 유틸
│ │ │ ├── config # Spring 설정 (Security, Swagger 등)
│ │ │ └── exception # 전역 예외 핸들링
│ │ └── resources
│ │ ├── application.yml
│ └── test
...