NOOK 프로젝트의 백엔드 레포지토리입니다.
Spring Boot 기반의 서버로 구성되어 있으며, 책과 독서 활동을 중심으로 한 독서 플랫폼의 핵심 기능을 제공합니다.
1차 UMC 8기 데모데이 2025.06 ~ 2025.08
2차 런칭 준비 2025.09 ~ ing
NOOK는 독서 기록과 서재 관리에 집중한 독서 플랫폼입니다.
사용자는 책을 검색하고 서재에 담은 뒤, 독서 기록과 집중 기록을 남기고 자신의 독서 흐름을 타임라인으로 확인할 수 있습니다.
주요 기능
- 개인 서재 및 독서 상태 관리
- 독서 기록 작성, 조회, 삭제
- 포커스 시작/종료 및 월별 통계 조회
- 도서 검색, 추천 도서 및 베스트셀러 조회
- 온보딩, OAuth 로그인, JWT 기반 인증
- Cloudflare R2 presigned URL 기반 이미지 업로드
| Backend | Backend | Backend |
|---|---|---|
![]() |
![]() |
![]() |
| 이지원 서재 및 포커스 홈 화면 통계 독서기록 기능 회원 관련 기능(소셜 로그인 등) 사진 업로드 기능 |
김단하 포커스 시작/종료, 테마 조회 |
김주현 도서 검색 및 등록(알라딘 API 사용) 온보딩 책 상세 및 타임라인 조회 |
| 카테고리 | 기술 |
|---|---|
| Language | Java 17 |
| Framework | Spring Boot, Spring Data JPA, QueryDSL |
| Security | Spring Security, JWT, OAuth2 |
| Database | PostgreSQL(Supabase), Redis |
| Test | JUnit 5, H2(Test), JaCoCo |
| Monitoring | Spring Actuator, Prometheus, Grafana, Loki |
| Deployment / Infra | Nginx, AWS, Docker, GitHub Actions |
| Documentation | Spring REST Docs, Swagger(OpenAPI) |
| Storage / External API | Cloudflare R2, Aladin API |
프로젝트의 데이터베이스 구조입니다.
NOOK 서비스의 서버 구성도입니다.(이전 버전, 추후 수정 예정)
src
└── main
├── java
│ └── app
│ └── nook
│ ├── NookApplication.java
│ ├── aladin # 알라딘 API 연동
│ ├── book # 도서, 추천, 검색, 카테고리
│ ├── focus # 집중 세션/테마
│ ├── global # 공통 설정, 응답, 예외, API 버전
│ ├── group # 그룹 관련 확장 패키지
│ ├── library # 서재, 독서 상태, 통계
│ ├── r2 # 이미지 presigned URL 발급
│ ├── record # 독서 기록, 감정, 기록 이미지
│ ├── redis # Redis 연동 유틸/서비스
│ ├── search # 검색 관련 확장 패키지
│ ├── timeline # 서재 타임라인
│ └── user # 회원, 인증, OAuth, JWT, 온보딩
└── resources
└── application.yml
도메인 내부는 대체로 아래 구조를 따릅니다.
{domain}
├── controller
├── service
├── repository
├── domain
├── dto
├── converter
├── exception
└── event
추가로 현재 API는 @Api1Version 기반으로 /api/v1/** prefix를 사용합니다.
- 기본 통합 브랜치:
develop-demo - 기능 개발 브랜치:
feature/* - 긴급 수정 브랜치:
hotfix/*
기능 개발 시 통합 브랜치에서 파생된 기능 브랜치에서 작업합니다.
완료되면 Pull Request를 통해 리뷰 후 병합합니다.
- 기본 API 문서는 Swagger(
/swagger-ui/index.html)와 REST Docs(/docs/index.html)로 관리 /api/**경로는 기본적으로 인증 필요,/api/v1/auth/**등 일부 공개 경로만 예외- 작업 전 이슈를 등록하고 PR에서 연결
- 모든 PR은 코드리뷰 후 merge
- 테스트와 문서 생성을 위해
./gradlew clean build기준으로 검증 - 컨트롤러는 얇게 유지하고 비즈니스 로직은 서비스 계층에 배치


