♠︎ 2025. 7. 3 ~ 2025. 7. 28 ♠︎
- 기존 도서 플랫폼은 키워드 중심 검색에 의존
- 사용자의 감정 상태나 정서적 맥락을 반영하지 못함
- '감정 선택 -> 도서 추천 -> 검색어 시각화 -> 히스토리 기록' 의 흐름을 통해 사용자의 도서 검색 효율 향상
- 감정 태그 클릭 (최대 5개까지 가능)
- 사용자 감정에 기반한 도서를 추천 받음
- 사용자는 감정에 맞는 도서를 추천받음으로써 감정 흐름을 따라가는 몰입형 독서 경험을 설계할 수 있음
- 사용자가 추천한 도서를 통해 독후감 작성 및 독서모임에 참여할 수 있음
- 단순한 도서 서비스를 제공받는 것이 아닌 서로가 공감하며 책의 내용을 공유할 수 있는 환경 제공
flowchart TB
subgraph Clients
FE[Frontend/SPA]:::c
BOT[Webhook/LLM]:::c
end
subgraph API Layer
MemberCtrl[Member/Auth]
BookCtrl[Book]
ReviewCtrl[Review]
ChatCtrl[WebSocket/Chat]
NotiCtrl[SSE/Notification]
SearchCtrl[AISearch]
EmotionCtrl[Emotion]
end
subgraph Services
MemberSvc
BookSvc
ReviewSvc
ChatSvc
NotiSvc
SearchSvc
EmotionSvc
BatchJob[Spring Batch]
end
subgraph Data
RDB[(RDB: JPA/QueryDSL)]
MONGO[(MongoDB: Chat logs)]
REDIS[(Redis: Token/Cache/PubSub)]
ES[(Elasticsearch)]
end
subgraph External
Aladin[Aladin OpenAPI]
end
FE --> MemberCtrl & BookCtrl & ReviewCtrl & ChatCtrl & NotiCtrl & SearchCtrl & EmotionCtrl
BOT --> SearchCtrl
MemberCtrl --> MemberSvc --> RDB & REDIS
BookCtrl --> BookSvc --> RDB
ReviewCtrl --> ReviewSvc --> RDB
ChatCtrl --> ChatSvc --> REDIS & MONGO & RDB
NotiCtrl --> NotiSvc --> REDIS & RDB
SearchCtrl --> SearchSvc --> ES & RDB
EmotionCtrl --> EmotionSvc --> RDB
BatchJob --> Aladin --> BatchJob --> RDB
BookSvc -. "BookCreatedEvent" .-> SearchSvc
SearchSvc --> ES
classDef c fill:#eef,stroke:#88a,stroke-width:1px;
| 구분 | 기술/도구 |
|---|---|
| Frontend | React, TypeScript, Styled-components, React-router |
| Backend | Java 17 (LTS), Spring Boot 3.5.3, Spring Security, JPA, QueryDSL, H2 |
| DataBase | MySQL, MongoDB 7.0, Redis, ElasticSearch |
| Main Tech Stack | WebSocket, STOMP, Redis Pub/Sub |
| DevOps | Docker, Github Actions, Jenkins, Grafana, Prometheus, Discord, ELK(ElasticSearch + Logstash + Kibana), AWS(S3, RDS, EC2), ElasticCache, Nginx |
moodbook-backend/
├── src/main/java/com/moodbook
│ ├── domain
│ │ ├── member
│ │ ├── book
│ │ ├── review
│ │ ├── bookmark
│ │ ├── chat
│ │ └── notification
│ ├── global
│ │ ├── config
│ │ ├── exception
│ │ └── security
│ └── MoodbookApplication.java
│
├── src/main/resources
│ ├── application.yml
│ └── static / templates
│
├── build.gradle
└── docker-compose.yml