프로젝트 소개

무료 고품질 이미지와 동영상을 검색하고 다운로드할 수 있는 미디어 검색 서비스입니다. Pexels API를 활용하여 수백만 장의 무료 사진과 동영상을 제공합니다.

Live: media.lemuel.co.kr

핵심 기능

  • 사진 검색: 키워드로 고품질 무료 사진 검색
  • 동영상 검색: HD 무료 동영상 검색
  • 다운로드: 원본 해상도 다운로드
  • 큐레이션: 메인 화면에 Pexels 추천 사진
  • Caffeine 캐시: 동일 검색 10분간 캐싱 (API 호출 최소화)
  • 반응형 UI: 다크 테마, 모바일 지원

아키텍처

사용자 → Spring Boot (Thymeleaf)
              ↓
         PexelsService
              ↓ (RestClient + Caffeine Cache)
         Pexels API (photos + videos)
              ↓
         검색 결과 → 그리드 UI 렌더링

핵심 코드

@Cacheable(value = "pexels-photos", key = "#query + '-' + #page")
public SearchResult searchPhotos(String query, int page, int perPage) {
    Map<String, Object> response = restClient.get()
        .uri("/v1/search?query={q}&page={p}&per_page={pp}", query, page, perPage)
        .retrieve()
        .body(new ParameterizedTypeReference<>() {});
    // ... 결과 매핑
}

API 엔드포인트

GET /              → 큐레이션 사진 (메인)
GET /search?q=nature&type=photo  → 사진 검색
GET /search?q=ocean&type=video   → 동영상 검색
GET /api/search?q=korea          → JSON API

기술 스택

Spring Boot 4 / Java 25 / Thymeleaf / Pexels API / Caffeine Cache / Docker

GitHub: MyoungSoo7/media-search