# sb02-deokhugam-team7

[![codecov](<https://codecov.io/gh/sb02-mid-project-team7/sb02-deokhugam-team7/graph/badge.svg?token=XLA9WNJZL3>)](<https://codecov.io/gh/sb02-mid-project-team7/sb02-deokhugam-team7>)   
![Spring](<https://img.shields.io/badge/spring-%236DB33F.svg?style=for-the-badge&logo=spring&logoColor=white>)
![Postgres](<https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge&logo=postgresql&logoColor=white>) ![AWS](<https://img.shields.io/badge/AWS-%23FF9900.svg?style=for-the-badge&logo=amazon-aws&logoColor=white>)
![Java](<https://img.shields.io/badge/java-%23ED8B00.svg?style=for-the-badge&logo=openjdk&logoColor=white>)

# **7ํŒ€**

[๐ŸชงํŒ€ ํšŒ์˜ ๋…ธ์…˜ ํŽ˜์ด์ง€ ๋ฐ”๋กœ๊ฐ€๊ธฐ](<https://spot-blizzard-f33.notion.site/7-1fc49229cb1480e8a716c601a9388fc0?source=copy_link>)   
[๐Ÿชง๊นƒํ—ˆ๋ธŒ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋ฐ”๋กœ๊ฐ€๊ธฐ](<https://github.com/sb02-mid-project-team7/sb02-deokhugam-team7>)

## **ํŒ€์› ๊ตฌ์„ฑ**

[โœ…๊น€ํƒœ์šฐ](<https://github.com/kimtaewoo9>)<br>
[โœ…์„ ํ˜œ๋ฆฐ](<https://github.com/seonseon933>)<br>
[โœ…์ด์ข…์›](<https://github.com/BrotherMountain>)<br>
[โœ…์ตœ๊ทœ์›](<https://github.com/GYUWON-CHOI>)<br>
[โœ…ํ•œ์„ฑํƒœ](<https://github.com/Seong-taeHan>)

---

## **ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ**

- ์ฑ… ์ฝ๋Š” ์ฆ๊ฑฐ์›€์„ ๊ณต์œ ํ•˜๊ณ , ์ง€์‹๊ณผ ๊ฐ์ƒ์„ ๋‚˜๋ˆ„๋Š” ์ฑ… ๋•ํ›„๋“ค์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค
- ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„: 2025.5.28 ~ 2025.06.18

---

## **๊ธฐ์ˆ  ์Šคํƒ**

- Backend: Spring Boot, Spring Security, Spring Data JPA
- Database: PostgreSQL
- ๊ณตํ†ต Tool: Git & Github, Discord

---

## ํŒ€์›๋ณ„ ๊ตฌํ˜„ ๊ธฐ๋Šฅ ์ƒ์„ธ
### **๊น€ํƒœ์šฐ**

(์ž์‹ ์ด ๊ฐœ๋ฐœํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‚ฌ์ง„์ด๋‚˜ gif ํŒŒ์ผ ์ฒจ๋ถ€)

- **๋Œ“๊ธ€ ๊ด€๋ฆฌ API**
    - ๋Œ“๊ธ€ ์ •๋ณด์˜ CRUD ์ฒ˜๋ฆฌ

### **์„ ํ˜œ๋ฆฐ**

(์ž์‹ ์ด ๊ฐœ๋ฐœํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‚ฌ์ง„์ด๋‚˜ gif ํŒŒ์ผ ์ฒจ๋ถ€)

- **๋ฆฌ๋ทฐ ๊ด€๋ฆฌ API**
    - Query DSL์„ ํ™œ์šฉํ•œ ๋ฆฌ๋ทฐ ์ •๋ณด์˜ CRUD ์ฒ˜๋ฆฌ(Spring Data JPA ์‚ฌ์šฉ).
- **์ธ๊ธฐ ๋ฆฌ๋ทฐ API**
    - Spring Batch, Schedule์„ ํ™œ์šฉํ•œ ์ •๊ธฐ์ ์ธ ๋ฐฐ์น˜ ์‹œ์Šคํ…œ ๊ตฌํ˜„. 
    - ๋ฆฌ๋ทฐ์˜ ์ข‹์•„์š” ์ˆ˜, ๋Œ“๊ธ€ ์ˆ˜์— ๋”ฐ๋ฅธ ๊ธฐ๊ฐ„๋ณ„(์ผ๊ฐ„, ์ฃผ๊ฐ„, ์›”๊ฐ„, ์—ญ๋Œ€) ๋ฆฌ๋ทฐ ์ ์ˆ˜๋ฅผ ๊ตฌํ•˜์—ฌ ์ธ๊ธฐ ๋ฆฌ๋ทฐ ๊ตฌํ˜„.

### **์ด์ข…์›**

(์ž์‹ ์ด ๊ฐœ๋ฐœํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‚ฌ์ง„์ด๋‚˜ gif ํŒŒ์ผ ์ฒจ๋ถ€)

- **๋„์„œ ๊ด€๋ฆฌ API**
    - ๋„์„œ ์ •๋ณด์˜ CRUD ์ฒ˜๋ฆฌ(Spring Data JPA ์‚ฌ์šฉ)
    - ISBN์„ ๋ฐ”ํƒ•์œผ๋กœ ๋„ค์ด๋ฒ„ API ์š”์ฒญ ์„œ๋น„์Šค ๊ตฌํ˜„
    - ZXing์„ ํ†ตํ•ด ๋ฐ”์ฝ”๋“œ๋กœ ISBN์„ ์ถ”์ถœํ•˜๋Š” ์„œ๋น„์Šค ๊ตฌํ˜„
    - S3๋ฒ„ํ‚ท์— ๋„์„œ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œ
- **์ธ๊ธฐ ๋„์„œ API**
    - ๊ธฐ๊ฐ„๋ณ„(์ผ๋ณ„, ์ฃผ๊ฐ„, ์›”๊ฐ„, ์—ญ๋Œ€) ๋ฆฌ๋ทฐ ์ˆ˜์™€ ํ‰์ ์— ๋”ฐ๋ฅธ ์ธ๊ธฐ ๋„์„œ ์ˆœ์œ„ ๊ตฌํ˜„

### **์ตœ๊ทœ์›**

(์ž์‹ ์ด ๊ฐœ๋ฐœํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‚ฌ์ง„์ด๋‚˜ gif ํŒŒ์ผ ์ฒจ๋ถ€)

- **์‚ฌ์šฉ์ž ๊ด€๋ฆฌ API**
    - ์‚ฌ์šฉ์ž ์ •๋ณด์˜ CRUD ์ฒ˜๋ฆฌ(Spring Data JPA ์‚ฌ์šฉ)
- **ํŒŒ์›Œ ์œ ์ € API**
    - Spring Batch, Schedule์„ ํ™œ์šฉํ•œ ์ •๊ธฐ์ ์ธ ๋ฐฐ์น˜ ์‹œ์Šคํ…œ ๊ตฌํ˜„. 
    - ๊ธฐ๊ฐ„๋ณ„(์ผ๊ฐ„, ์ฃผ๊ฐ„, ์›”๊ฐ„, ์—ญ๋Œ€) ํ™œ๋™ ์ ์ˆ˜์— ๋”ฐ๋ฅธ ํŒŒ์›Œ ์œ ์ € ์ˆœ์œ„ ๊ตฌํ˜„.

### **ํ•œ์„ฑํƒœ**

(์ž์‹ ์ด ๊ฐœ๋ฐœํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‚ฌ์ง„์ด๋‚˜ gif ํŒŒ์ผ ์ฒจ๋ถ€)

- **์•Œ๋ฆผ ๊ด€๋ฆฌ API**
    - ์‚ฌ์šฉ์ž์˜ ๋ฆฌ๋ทฐ์— ์ข‹์•„์š”, ๋Œ“๊ธ€์ด ์ถ”๊ฐ€๋˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ์„ ์ƒ์„ฑ
    - ์ผ์ฃผ์ผ์ด ์ง€๋‚œ ์•Œ๋žŒ ์ž๋™ ์‚ญ์ œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„
- **๊ณต์šฉ ์—๋Ÿฌ ์‘๋‹ต ๊ด€๋ฆฌ**
    - ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๊ณตํ†ต ์‘๋‹ต ์ฒ˜๋ฆฌ ๊ตฌํ˜„
- **๋กœ๊ทธ ๊ด€๋ฆฌ**
    - Aspect๋ฅผ ์ด์šฉํ•œ controller, service, repository์˜ ์ผ๊ด€๋œ ๋กœ๊ทธ ์ฒ˜๋ฆฌ
    - ํ•˜๋ฃจ์— ํ•œ๋ฒˆ ์—๋Ÿฌ ๋กœ๊ทธ ๋ฐ ์ •์ƒ ๋กœ๊ทธ S3 ์—…๋กœ๋“œ
    - MDC๋ฅผ ์ด์šฉํ•ด ์š”์ฒญ๋ณ„ ์‚ฌ์šฉ์ž ๋ฐ ์š”์ฒญ ์‹œ๊ฐ„ ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ๋กœ๊ทธ ๊ตฌํ˜„

---

## **ํŒŒ์ผ ๊ตฌ์กฐ**
<details>
<summary>๐Ÿ“ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๊ตฌ์กฐ</summary>
<div markdown="1">

. โ”œโ”€.github โ”‚ โ”œโ”€ISSUE_TEMPLATE โ”‚ โ””โ”€workflows โ”œโ”€.gradle โ”œโ”€build โ”œโ”€gradle โ”‚ โ””โ”€wrapper โ”œโ”€src โ”‚ โ”œโ”€main โ”‚ โ”‚ โ”œโ”€generated โ”‚ โ”‚ โ”‚ โ””โ”€com โ”‚ โ”‚ โ”‚ โ””โ”€sprint โ”‚ โ”‚ โ”‚ โ””โ”€deokhugamteam7 โ”‚ โ”‚ โ”‚ โ””โ”€domain โ”‚ โ”‚ โ”‚ โ”œโ”€book โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€entity โ”‚ โ”‚ โ”‚ โ”œโ”€comment โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€entity โ”‚ โ”‚ โ”‚ โ”œโ”€notification โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€entity โ”‚ โ”‚ โ”‚ โ”œโ”€review โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€entity โ”‚ โ”‚ โ”‚ โ””โ”€user โ”‚ โ”‚ โ”‚ โ””โ”€entity โ”‚ โ”‚ โ”œโ”€java โ”‚ โ”‚ โ”‚ โ””โ”€com โ”‚ โ”‚ โ”‚ โ””โ”€sprint โ”‚ โ”‚ โ”‚ โ””โ”€deokhugamteam7 โ”‚ โ”‚ โ”‚ โ”œโ”€aspect โ”‚ โ”‚ โ”‚ โ”œโ”€config โ”‚ โ”‚ โ”‚ โ”œโ”€constant โ”‚ โ”‚ โ”‚ โ”œโ”€domain โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€book โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€batch โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€schedule โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€step โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€controller โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€dto โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€condition โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€request โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€response โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€entity โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€repository โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€custom โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€service โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€comment โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€controller โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€dto โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€request โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€response โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€entity โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€repository โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€service โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€log โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€service โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€notification โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€controller โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€dto โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€entity โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€repository โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€custom โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€service โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€review โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€batch โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€schedule โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€step โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€controller โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€dto โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€request โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€response โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€entity โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€repository โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€custom โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€service โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€user โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€batch โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€schedule โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€step โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€tasklet โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€controller โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€dto โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€request โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€response โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€entity โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€repository โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€custom โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€service โ”‚ โ”‚ โ”‚ โ”œโ”€exception โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€book โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€comment โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€notification โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€review โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€user โ”‚ โ”‚ โ”‚ โ””โ”€swagger โ”‚ โ”‚ โ””โ”€resources โ”‚ โ”‚ โ””โ”€static โ”‚ โ”‚ โ”œโ”€assets โ”‚ โ”‚ โ””โ”€images โ”‚ โ””โ”€test โ”‚ โ”œโ”€java โ”‚ โ”‚ โ””โ”€com โ”‚ โ”‚ โ””โ”€sprint โ”‚ โ”‚ โ””โ”€deokhugamteam7 โ”‚ โ”‚ โ”œโ”€config โ”‚ โ”‚ โ””โ”€domain โ”‚ โ”‚ โ”œโ”€book โ”‚ โ”‚ โ”‚ โ”œโ”€entity โ”‚ โ”‚ โ”‚ โ””โ”€service โ”‚ โ”‚ โ”œโ”€comment โ”‚ โ”‚ โ”‚ โ”œโ”€controller โ”‚ โ”‚ โ”‚ โ”œโ”€data โ”‚ โ”‚ โ”‚ โ”œโ”€repository โ”‚ โ”‚ โ”‚ โ””โ”€service โ”‚ โ”‚ โ”œโ”€notification โ”‚ โ”‚ โ”‚ โ”œโ”€config โ”‚ โ”‚ โ”‚ โ”œโ”€intergration โ”‚ โ”‚ โ”‚ โ””โ”€unit โ”‚ โ”‚ โ”‚ โ”œโ”€controller โ”‚ โ”‚ โ”‚ โ”œโ”€entity โ”‚ โ”‚ โ”‚ โ”œโ”€repository โ”‚ โ”‚ โ”‚ โ””โ”€service โ”‚ โ”‚ โ”‚ โ””โ”€impl โ”‚ โ”‚ โ”œโ”€review โ”‚ โ”‚ โ”‚ โ”œโ”€batch โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€schedule โ”‚ โ”‚ โ”‚ โ”œโ”€controller โ”‚ โ”‚ โ”‚ โ”œโ”€entity โ”‚ โ”‚ โ”‚ โ”œโ”€integration โ”‚ โ”‚ โ”‚ โ”œโ”€repository โ”‚ โ”‚ โ”‚ โ””โ”€service โ”‚ โ”‚ โ”‚ โ””โ”€basic โ”‚ โ”‚ โ””โ”€user โ”‚ โ”‚ โ”œโ”€config โ”‚ โ”‚ โ”œโ”€controller โ”‚ โ”‚ โ”œโ”€entity โ”‚ โ”‚ โ”œโ”€integration โ”‚ โ”‚ โ”œโ”€repository โ”‚ โ”‚ โ””โ”€service โ”‚ โ””โ”€resources โ”‚ โ””โ”€file โ””โ”€storage


</div>
</details>

---

## **๊ตฌํ˜„ ํ™ˆํŽ˜์ด์ง€**

(๊ฐœ๋ฐœํ•œ ํ™ˆํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๋งํฌ ๊ฒŒ์‹œ)

<https://www.codeit.kr/>

---

## **ํ”„๋กœ์ ํŠธ ํšŒ๊ณ ๋ก**

(์ œ์ž‘ํ•œ ๋ฐœํ‘œ์ž๋ฃŒ ๋งํฌ ํ˜น์€ ์ฒจ๋ถ€ํŒŒ์ผ ์ฒจ๋ถ€)