← 포트폴리오 목록

통합 도서 검색·수업자료 포털

교과서·참고서·단행본을 한 번에 찾는 통합 검색, 도서별 수록 자료 다운로드, 자료 중심 독서 교육 제안 카드, 작가·장르 탐색을 포함한 이용자 사이트를 Spring Boot + Thymeleaf + React 기반으로 설계·구현하는 프로젝트입니다.

프로젝트 납품 요약

아래 프로젝트 개요와 핵심 기능에서 구현 화면을 확인할 수 있습니다.

서비스 타입Web
업종교육 플랫폼
기술 스택
JavaSpring BootThymeleafSpring Data JPAMySQLReactTypeScriptUbuntuNCP
주요 기능
  • 통합 검색
  • 도서 상세·자료 다운로드
  • 독서 교육 제안
  • 작가·카테고리 탐색

프로젝트 개요

범위: 개발, 디자인, 기획

교과서·참고서·단행본을 한 번에 찾는 통합 검색, 도서별 수록 자료 다운로드, 자료 중심 독서 교육 제안 카드, 작가·장르 탐색을 포함한 이용자 사이트를 Spring Boot + Thymeleaf + React 기반으로 설계·구현하는 프로젝트입니다.

작업 범위

  • 통합 검색: 하나의 검색창에서 도서명·작가명·시리즈를 동시에 조회하고 교과서·참고서·단행본을 구분해 보여줍니다
  • 도서 상세·자료 다운로드: 도서 상세에서 수록 자료 목록을 확인하고 파일 유형별로 내려받습니다
  • 독서 교육 제안: 자료 중심 카드 UI로 독서 교육 제안 자료를 보여주고 목록 안에서 바로 검색합니다
  • 작가·카테고리 탐색: 작가별·장르별로 도서를 탐색하고 작가 상세에서 대표작과 관련 자료를 확인합니다

주요 업무

  • 통합 검색 화면: GET 쿼리스트링 기반 검색으로 결과 URL을 그대로 공유할 수 있고, 유형별 탭과 필터 레일로 결과를 좁힙니다
  • 도서 상세·자료 다운로드 화면: 도서와 연동된 자료를 유형별 그룹으로 보여주고 다운로드 이력을 기록합니다
  • 독서 교육 제안 화면: 하나의 자료가 여러 도서에 연동된 모습을 카드 안 도서 칩으로 표현하고 상단 고정 자료를 먼저 노출합니다
  • 작가·카테고리 탐색 화면: 도서가 여러 작가와 여러 장르에 동시에 속하는 구조를 반영한 탐색 화면입니다
통합 도서 검색·수업자료 포털
요구사항 정의

프로젝트 핵심 과제

프로젝트 진행 시 해결한 핵심 기술 과제입니다.

한글 도서명·작가명 부분 일치 검색에서 형태소 단위 차이로 결과가 누락될 수

ngram 파서와 보조 정렬 규칙으로 대응합니다

하나의 자료가 수십 권의 도서에 연동될 때 목록 쿼리의 N+1 문제가 생길 수

배치 페치와 프로젝션 조회로 대응합니다

교과서·참고서·단행본의 메타데이터 항목이 달라 통합 결과 카드의 표시 규칙이 복잡해질 수

유형별 카드 변형으로 대응합니다

서버 렌더링 화면과 React 화면 사이에서 검색 상태가 어긋날 수

URL을 단일 상태 출처로 삼아 대응합니다

구현 내용

핵심 기능 상세

핵심 기능 1

통합 검색

하나의 검색창에서 도서명·작가명·시리즈를 동시에 조회하고 교과서·참고서·단행본을 구분해 보여줍니다. GET 쿼리스트링 기반 검색으로 결과 URL을 그대로 공유할 수 있고, 유형별 탭과 필터 레일로 결과를 좁힙니다.

  • Spring Data JPA Specification으로 도서·작가·시리즈 복합 조건을 동적 쿼리로 조합
  • MySQL FULLTEXT 인덱스(ngram 파서)로 한글 부분 일치 검색 구성
  • React 필터 레일 상태를 URL 쿼리스트링과 동기화하여 검색 결과 링크 공유 지원

도서·작가·시리즈를 단일 검색 API로 묶고 유형 구분 배지로 노출하는 통합 검색 구조를 설계합니다.

통합 검색
통합 검색 실제 화면
핵심 기능 2

도서 상세·자료 다운로드

도서 상세에서 수록 자료 목록을 확인하고 파일 유형별로 내려받습니다. 도서와 연동된 자료를 유형별 그룹으로 보여주고 다운로드 이력을 기록합니다.

  • Spring MVC 스트리밍 응답과 Content-Disposition 헤더로 한글 파일명 다운로드 처리
  • 도서-자료 연결 테이블을 조인하여 상세 화면의 자료 목록을 한 번의 쿼리로 구성
  • Thymeleaf 프래그먼트로 도서 상세 영역을 재사용 가능한 단위로 분리

하나의 자료가 여러 도서에 연동되는 구조를 상세 화면에서 자연스럽게 노출하는 데이터 모델을 설계합니다.

도서 상세·자료 다운로드
도서 상세·자료 다운로드 실제 화면
핵심 기능 3

독서 교육 제안

자료 중심 카드 UI로 독서 교육 제안 자료를 보여주고 목록 안에서 바로 검색합니다. 하나의 자료가 여러 도서에 연동된 모습을 카드 안 도서 칩으로 표현하고 상단 고정 자료를 먼저 노출합니다.

  • React 카드 그리드와 디바운스 목록 내 검색으로 서버 호출 횟수 제어
  • 자료-도서 N:M 관계를 DTO 프로젝션으로 내려 카드 하단 도서 칩 렌더링
  • Intersection Observer 기반 무한 스크롤로 긴 자료 목록 분할 로딩

자료 하나에 여러 도서를 연결해 보여주는 N:M 카드 구조를 React 컴포넌트로 구현합니다.

독서 교육 제안
독서 교육 제안 실제 화면
핵심 기능 4

작가·카테고리 탐색

작가별·장르별로 도서를 탐색하고 작가 상세에서 대표작과 관련 자료를 확인합니다. 도서가 여러 작가와 여러 장르에 동시에 속하는 구조를 반영한 탐색 화면입니다.

  • 작가·카테고리 마스터 테이블과 매핑 테이블로 정규화된 JPA 연관 관계 설계
  • 카테고리 트리를 재귀 쿼리 대신 경로 컬럼으로 저장하여 하위 장르 일괄 조회
  • Thymeleaf 서버 렌더링으로 작가 상세 페이지의 초기 HTML을 구성

도서-작가, 도서-장르 N:M 구조를 이용자 탐색 경로와 일치시키는 데이터 모델을 구현합니다.

작가·카테고리 탐색
작가·카테고리 탐색 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

현행 구조 분석 및 스키마 개편 설계 · 2026.10

기존 세 사이트의 도서·작가·자료 구조를 분석하고 N:M 매핑 ERD와 MySQL 스키마를 설계합니다

STEP 2

검색·도서 API 개발 · 2026.10

Spring Boot 기반 통합 검색, 도서 상세, 자료 다운로드 REST API를 구현합니다

STEP 3

이용자 화면 구현 · 2026.10

Thymeleaf 서버 렌더링과 React 카드·필터 컴포넌트로 검색·상세·제안 화면을 구현합니다

STEP 4

작가·카테고리 탐색 및 통합 검증 · 2026.10

장르 트리 탐색과 작가 상세를 구현하고 API 통합 테스트로 화면 흐름을 검증합니다

개발 결과

한글 통합 검색 쿼리 구조 설계도서·작가·시리즈를 단일 API로 조회하는 Specification 기반 동적 쿼리와 ngram 전문 검색 인덱스를 설계합니다
자료-도서 N:M 연동 모델 구현하나의 자료를 여러 도서에 연동하는 매핑 테이블과 DTO 프로젝션을 구현하여 카드 UI에서 도서 칩을 노출합니다
URL 동기화 필터 레일 구축유형·학년·장르 필터 상태를 쿼리스트링과 양방향 동기화하여 검색 결과 링크 공유를 지원하는 구조를 구축합니다
서버 렌더링과 React 혼합 구조 설계Thymeleaf 페이지 안에 React 아일랜드를 마운트하는 혼합 구조로 초기 로딩 HTML과 상호작용 UI를 분리합니다

기술적 주안점

  • 도서·작가·시리즈를 단일 검색 API로 묶고 유형 구분 배지로 노출하는 통합 검색 구조를 설계합니다
  • 하나의 자료가 여러 도서에 연동되는 구조를 상세 화면에서 자연스럽게 노출하는 데이터 모델을 설계합니다
  • 자료 하나에 여러 도서를 연결해 보여주는 N:M 카드 구조를 React 컴포넌트로 구현합니다

유사한 프로젝트를 기획하고 계신가요?

필요한 기능과 일정을 알려주시면 개발 범위를 함께 정리하겠습니다.

프로젝트 문의