Skip to content

TEAM-ZIP/Backend

Repository files navigation

서점ZIP

Slide 16_9 - 1

📍 https://bookstore-zip.site/에서 서점집을 만나보세요!

프로젝트 개요

이 프로젝트는 개인만의 특성을 드러내는 독립출판물의 감성을 즐기는 사용자가 독립출판물을 더 잘 찾아낼 수 있도록, 독립출판물을 비치한 서점에 대한 위치, 키워드, 운영시간 등의 정보와 도서출판전산망에 등록되지 않은 독립출판물 리뷰 제공 및 추천 시스템을 제공합니다.

주요 기능

Slide 16_9 - 31

  1. BOOKSNAP (사용자 리뷰 기반 독립출판물 데이터 구축)

    • 사용자가 직접 독립출판물에 대한 리뷰를 등록 (책 제목, 작가, 평점, 서점 사진 등)
    • 사용자 참여 기반 데이터를 구축하여 독립출판물 정보를 확보
    • 축적된 리뷰 데이터를 활용하여 추천 시스템 학습 데이터로 활용 가능
  2. 서점 ZIP (지도 기반 서점 탐색)

    • 사용자의 현재 위치 또는 검색 위치를 기준으로 주변 독립서점을 지도에서 시각화
    • Kakao 지도 API 및 거리 계산 알고리즘을 활용하여 위치 기반 필터링, 태그 기반 분류 지원
    • 서점별 보유 도서, 운영 시간, 태그 정보 등 상세 정보 제공
  3. Bookie (RAG 기반 독립출판물 추천)

    • LLM + Vector DB를 활용한 RAG 기반 AI 추천 시스템
    • 사용자 리뷰, 검색, 찜 목록 등의 활동 데이터를 바탕으로 개인화된 독립출판물 추천
    • 챗봇 인터페이스를 통해 직관적인 추천 경험 제공

부가 기능

Slide 16_9 - 51

🛠️ 사용 기술

Spring Boot Gradle JPA Redis MySQL AWS GitHub Swagger Lombok


💡 시작하기

사전준비

  • Git

  • Java Development Kit(JDK)

  • 데이터베이스 준비

  • InteliJ IDEA

    • local에서 프로젝트 실행을 위해 필요합니다.
  • 부가 기능 api키 준비

    • spring.mail
    • kakao
      • 로그인을 위한 rest api key
    • cloudinary
      • api key
      • clode name
    • ai
      • gpt api key

How to Build

  1. Repository 클론
git clone https://github.com/TEAM-ZIP/Backend.git
  1. .env
  • 전달받은 .env파일을 사용하거나 직접 .env 파일의 환경변수를 설정합니다.
  • .env 파일의 위치는 src/main/resources입니다.
ai.base.uri = {ai 서버 주소}
BOOKSTORE_CAFE_KEY = { 공공데이터포털 카페가 있는 서점 api key }
BOOKSTORE_CHILD_KEY = { 공공데이터포털 아동 서점 api key }
BOOKSTORE_INDEP_KEY = {공공데이터포털 독립 서점 api key}
cloudinary.api_key = {cloudniary api key}
cloudinary.api_secret = {cloudniary secret key}
DB_PASSWORD = {MySQL DB 비밀번호}
DB_URL = {MySQL url}
DB_USERNAME = {MySQL DB name}
jwt.secret = {60자 이상의 jwt 생성용 문자열}
kakao.client.id = {kakao rest api key}
kakao.redirect-uri = {kakao 로그인 용 redirect uri}
mail.password = {메일 앱 비밀번호}
mail.username = {메일 호트 이름}
openai.api.key = {gpt api key}
spring.redis.host = {redis 주소}
spring.redis.port = {redis 포트 번호}
  1. 빌드
cd Capstone-Backend
./gradlew build

How to Install

  • 서버 실행
cd build/libs
nohup java -jar bszip-0.0.1-SNAPSHOT.jar &

How to Test

  • 서버 실행 후, http://localhost:8080/ 에 접속

  • api test를 원하면, http://localhost:8080/swagger-ui/index.html#/에 접속하여 swagger를 통해 api 호출 테스트할 수 있음 image image

  • 프론트와 연동되어 테스트 진행 시, 프론트엔드 빌드/실행한 로컬 주소 혹은 배포된 주소에서 실제 이용하고 있는 api 호출 결과 확인 가능

    • 배포된 주소에서 다음과 같은 이메일과 비밀번호로 로그인 시 기존 데이터로 테스트할 수 있습니다.
    • email : user@example.com
    • password : password123

👋🏻 Members

홍지형 소현아

📍 아키텍처

architecture

🗂️ 폴더 구조

📂 src/main/java/com/capstone/bszip
├─ 📂 Book             ▶️ 도서 관련 기능 모듈
│   ├─ 📂 controller
│   ├─ 📂 domain
│   ├─ 📂 dto
│   ├─ 📂 repository
│   └─ 📂 service
├─ 📂 Bookie           ▶️ 챗봇 관련 기능 모듈
│   ├─ 📂 controller
│   ..
│   └─ 📂 service
├─ 📂 Bookstore        ▶️ 서점 관련 기능 모듈
│   ├─ 📂 controller
│   ..
│   └─ 📂 service
├─ 📂 Member           ▶️ 회원 관련 기능 모듈
│   ├─ 📂 controller
│   ..
│   └─ 📂 service
├─ 📂 auth             ▶️ 인증 관련 모듈 
│   ├─ 📂 blackList    ▶️ 로그아웃 
│   ├─ 📂 dto          ▶️ 토큰 요청/응답 객체 
│   ├─ 📂 refreshToken ▶️ Refresh 토큰 
│   ├─ 📂 security     ▶️ Jwt
│   ├─ AuthController
│   └─ AuthService
├─ 📂 cloudinary       ▶️ 클라우디너리 이미지 업로드 관련 기능
│   └─ 📂 service
├─ 📂 commonDto        ▶️ 공통 응답 객체 및 예외 처리
│   ├─ 📂 exception
│   ├─ ErrorResponse
│   └─ SuccessResponse
├─ 📂 config           ▶️ 전역 설정
└─ BszipApplication    ▶️ 메인 애플리케이션 실행 클래스
  • controller: HTTP 요청을 받아 처리하는 진입점
  • service: 비즈니스 로직 구현
  • repository: 데이터베이스에 접근하는 계층
  • domain: 데이터베이스 매핑을 위한 도메인 모델
  • dto: 요청/응답에 사용되는 데이터 전송 객체

📚 오픈소스

Backend Libraries & Tools

  1. Spring Boot : Spring Boot Official Site
  2. Lombok : Lombok Official Site
  3. MySQL : MySQL Official Site
  4. Redis : Redis Official Site
  5. Swagger : Swagger Official Site

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •