날씨가 생각보다 더워서, 혹은 추워서 입은 옷을 후회한 적이 있지 않나요?
매일 OOTD를 기록하고 싶은데, SNS에 올리기엔 부담스럽지 않나요?
이에, 저희는 개인화된 AI를 통해, 오늘의 날씨에 맞는 여러분의 옷을 추천하고,
친한 친구 20명과 함께하는 SNS를 제공하는 서비스, 왓(wot)을 기획하였습니다.
-
Java Development Kit (JDK 21) 설치
- JDK 21 이상이 설치되어 있어야 합니다.
-
Gradle 설치
-
MySQL 데이터베이스
- MySQL 8.0 이상 설치
- 사용할 DB를 생성합니다.
-
AWS S3 설정
- 이미지 저장을 위해 S3 버킷이 필요합니다.
- AWS Access Key와 Secret Key를
application.yml파일에 설정해야 합니다.
-
OpenWeather key 발급
-
Kakao 로그인 구현을 위한 Kakao Developer 애플리케이션 생성
- 저장소 클론
git clone <repository-url> cd <project-directory>
- 프로젝트 빌드
./gradlew build
-
application-local.yml 파일 생성
- 현재 application.yml 파일과 application-prod.yml 파일이 github에 올라가있다.
- 로컬로 실행하기 위해서는 application-local.yml 파일을 생성하고 작성해야한다.
- application-prod.yml 파일과 동일한 형식으로 작성하며, 각 환경변수에 맞는 값을 입력한다.
- 작성해야하는 환경변수는 DB 정보, 카카오 developer App 정보, OpenWeather key, Frontend URL 및 AI FestAPI URL 이다.
-
MySQL 데이터베이스 시작
-
애플리케이션 실행
./gradlew bootRun
-
애플리케이션 접속
- Swagger UI: http://localhost:8080/swagger-ui.html
- API 엔드포인트: http://localhost:8080
- 클라이언트와의 통신
- 클라이언트는 REST API를 통해 필요한 요청을 전송
- AI FestAPI와의 통신
- 클라이언트 요청 처리 과정에서 AI API 호출이 필요한 경우, 서버에서 AI의 FestAPI를 호출해 결과 반환
- 데이터 흐름
- 클라이언트 요청 → Spring Boot Controller → 내부 비즈니스 로직 실행 → AI FestAPI 호출 (필요 시) → 결과 반환
- 클라이언트 요청 → Spring Boot Controller → 내부 비즈니스 로직 실행 → AI FestAPI 호출 (필요 시) → 결과 반환
[계층별 역할]
- Controller Layer
- 클라이언트 요청(Request)을 수신하고, 응답(Response)을 반환하는 계층
- Service Layer와 DTO를 통해 상호작용
- Service Layer
- 비즈니스 로직을 처리하는 계층.
- 컨트롤러에서 받은 데이터를 기반으로 필요한 작업을 수행하고 결과를 반환
- Converter
- DTO와 엔티티(Entity) 간 변환을 담당하는 계층
- DB 레이어와 비즈니스 로직 계층 간 데이터를 매핑
- Repository Layer
- 데이터베이스와 상호작용하는 계층
- JPA를 기반으로 CRUD 작업 수행
- DTO (Data Transfer Object)
- 클라이언트와 서버 간의 데이터를 주고받는 객체
- 비즈니스 로직에서 사용되는 엔티티와 분리하여 클라이언트와의 통신 포맷을 제공
- Spring Boot Starter Web: REST API 구성
- Spring Data JPA: 데이터베이스 접근
- MySQL Connector: MySQL 연결
- Springdoc OpenAPI: Swagger UI 및 API 문서화
- AWS SDK: AWS S3 연동
- JSON Web Tokens (JWT): 인증 처리
- Spring Security: 엔드포인트 보안
- Jackson: JSON 처리
- Spring Framework: https://spring.io/projects/spring-framework
- AWS SDK for Java: https://aws.amazon.com/sdk-for-java/
- Lombok: https://projectlombok.org/
- JSON Library: https://github.com/stleary/JSON-java
| Frontend | Backend | AI |
| sujinRo | ujiiin | Choi-Hanui |

