Skip to content

UMC-NOOK/Server

Repository files navigation

NOOK Server

NOOK 프로젝트의 백엔드 레포지토리입니다.
Spring Boot 기반의 서버로 구성되어 있으며, 책과 독서 활동을 중심으로 한 독서 플랫폼의 핵심 기능을 제공합니다.

프로젝트 진행 기간

1차 UMC 8기 데모데이 2025.06 ~ 2025.08

2차 런칭 준비 2025.09 ~ ing

🛠 Tech Stack

Language

Framework / Security / Test

Deploy

Database

ETC


📚 목차

  1. 프로젝트 소개
  2. 백엔드 팀원 소개
  3. 기술 스택
  4. ERD
  5. 서버 아키텍처
  6. 프로젝트 구조
  7. 브랜치 전략
  8. Github 관리 규칙

📖 프로젝트 소개

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

🗂 ERD

프로젝트의 데이터베이스 구조입니다.

ERD

🖥 서버 아키텍처

NOOK 서비스의 서버 구성도입니다.(이전 버전, 추후 수정 예정)

Server Architecture

📂 프로젝트 구조

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를 사용합니다.

🌿 브랜치 전략

Workflow

  • 기본 통합 브랜치: develop-demo
  • 기능 개발 브랜치: feature/*
  • 긴급 수정 브랜치: hotfix/*

기능 개발 시 통합 브랜치에서 파생된 기능 브랜치에서 작업합니다.
완료되면 Pull Request를 통해 리뷰 후 병합합니다.


📍 Github 관리 규칙

  • 기본 API 문서는 Swagger(/swagger-ui/index.html)와 REST Docs(/docs/index.html)로 관리
  • /api/** 경로는 기본적으로 인증 필요, /api/v1/auth/** 등 일부 공개 경로만 예외
  • 작업 전 이슈를 등록하고 PR에서 연결
  • 모든 PR은 코드리뷰 후 merge
  • 테스트와 문서 생성을 위해 ./gradlew clean build 기준으로 검증
  • 컨트롤러는 얇게 유지하고 비즈니스 로직은 서비스 계층에 배치

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages