Skip to content

fallaylist/fallaylist-backend

Repository files navigation

logo

logo

강원도 계곡 여행의 모든 것 - 계곡 정보 조회, AI 기반 테마별 계곡 추천, 커뮤니티 소통, 여행 일정 공유를 제공하는 계곡 여행 전문 플랫폼

🏆 2025 관광데이터 활용 공모전 장려상 수상 (한국관광공사 x Kakao 주관)

Java Spring Boot Spring AI MySQL Redis AWS S3


📋 목차


✨ 주요 기능

🏔️ 계곡 정보

  • 강원도 계곡 데이터 - Tour API 연동을 통한 실시간 계곡 정보 제공
  • 상세 정보 조회 - 위치, 이미지, 편의시설 등 상세 정보 확인
  • 시군구별 필터링 - 지역별 계곡 탐색

🤖 AI 추천

  • Spring AI + Gemini 기반 개인화 계곡 추천
  • 키워드별 추천 - 트레킹, 캠핑, 가족여행 등 테마별 추천
  • 주간 자동 업데이트 - 스케줄러를 통한 추천 데이터 갱신

📝 폴레이리스트 (여행 일정)

  • 일정 생성/관리 - 나만의 계곡 여행 일정 작성
  • 에디터 픽 - 관리자 추천 폴레이리스트

💬 커뮤니티

  • 리뷰 작성 - 계곡 방문 후기 및 사진 공유
  • 댓글 & 좋아요 - 다른 사용자와 소통

👤 회원 관리

  • 카카오 소셜 로그인 - 간편한 회원가입
  • JWT 인증 - 안전한 토큰 기반 인증
  • 프로필 관리 - 닉네임, 프로필 이미지 수정

🛠️ 기술 스택

Backend

기술 버전 설명
Java 21 프로그래밍 언어
Spring Boot 3.5.3 웹 프레임워크
Spring Data JPA - ORM
Spring Security - 보안 & 인증
Spring AI 1.0.1 AI/LLM 통합

Database & Cache

기술 설명
MySQL 주 데이터베이스
Redis 캐시 & 토큰 저장소
H2 개발/테스트용 인메모리 DB

Cloud & Infrastructure

기술 설명
AWS S3 이미지 파일 저장소
AWS CloudFront CDN
Docker Compose 로컬 개발 환경

Documentation & Tools

기술 설명
SpringDoc OpenAPI API 문서 자동화 (Swagger UI)
Lombok 보일러플레이트 코드 제거

🏗️ 아키텍처

프로젝트는 헥사고날 아키텍처 (Ports & Adapters) 패턴을 따릅니다.

┌─────────────────────────────────────────────────────────────┐
│                        Adapter Layer                         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │   WebAPI    │  │  Security   │  │     Persistence     │  │
│  │ (Controller)│  │   (JWT)     │  │  (JPA Repository)   │  │
│  └──────┬──────┘  └──────┬──────┘  └──────────┬──────────┘  │
├─────────┼────────────────┼─────────────────────┼────────────┤
│         │                │                     │            │
│         ▼                ▼                     ▼            │
│  ┌──────────────────────────────────────────────────────┐   │
│  │                  Application Layer                    │   │
│  │              (Service, Use Cases)                     │   │
│  └──────────────────────────────────────────────────────┘   │
│                            │                                 │
│                            ▼                                 │
│  ┌──────────────────────────────────────────────────────┐   │
│  │                    Domain Layer                       │   │
│  │           (Entity, Aggregate, Value Object)           │   │
│  └──────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

📁 프로젝트 구조

src/main/java/fallguys/fallaylist/
├── 📂 adapter/        # 외부 환경과의 연결 (Inbound/Outbound 어댑터)
│   ├── 📂 in/         # Web API(Controller), Scheduler
│   └── 📂 out/        # Persistence(JPA), Storage(S3), AI Integration
├── 📂 application/    # 비즈니스 로직 및 UseCase (Service 계층)
│   ├── 📂 member/     # 도메인별 서비스 로직 (회원, 계곡, 리뷰 등)
│   └── 📂 valley/     # ...
├── 📂 domain/         # 핵심 도메인 모델 (Entity, Value Object)
│   ├── 📂 fallaylist/ # 도메인 엔티티 및 비즈니스 규칙
│   └── 📂 shared/     # 공통 추상 클래스 및 데이터
├── 📂 config/         # 애플리케이션 설정
└── 📄 FallaylistApplication.java

🗂️ 도메인 모델

핵심 도메인

graph TD
    %% 핵심 엔티티 정의
    Member[👤 Member<br/>회원]
    Valley[⛰️ Valley<br/>계곡]
    FallayList[🗺️ FallayList<br/>폴레이리스트]
    Schedule[📅 Schedule<br/>일정]
    Review[📝 Review<br/>리뷰]
    Keyword[🏷️ Keyword<br/>키워드]
    AI[✨ AI Recommendation]

    %% 핵심 관계 연결
    Member -->|작성| FallayList
    Member -->|작성| Review
    
    Valley -->|포함| Schedule
    Valley -->|대상| Review
    
    Schedule -->|일정 연결| FallayList
    Keyword -->|태그| Review

    %% AI 추천 로직 추가
    AI -.->|키워드 분석| Keyword
    AI -.->|맞춤 계곡 제안| Valley

    %% 인터랙션 (좋아요/댓글)
    FallayList --> FallayListLike[💖 Like]
    FallayList --> FallayListComment[💬 Comm]
    
    Review --> ReviewLike[💖 Like]
    Review --> ReviewComment[💬 Comm]

    %% 스타일 설정
    style FallayList fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
    style AI fill:#e8f5e9,stroke:#1b5e20,stroke-dasharray: 5 5
    style Member fill:#fff,stroke:#333
    style Valley fill:#fff,stroke:#333
    style Review fill:#fff,stroke:#333

Loading

주요 엔티티

엔티티 설명
Member 회원 정보 (카카오 소셜 로그인)
Valley 강원도 계곡 정보
FallayList 사용자가 만든 여행 일정
Schedule 폴레이리스트 내 일별 일정
Review 계곡 방문 리뷰
Keyword 계곡 특성 키워드 (트레킹, 캠핑 등)
ValleyRecommendation AI 기반 계곡 추천

📄 라이선스

이 프로젝트는 MIT 라이선스를 따릅니다.


👥 팀 Fallguys

계곡 여행의 새로운 경험을 만들어가는 Fallguys 팀입니다.

팀원:

Made with ❤️ by Team Fallguys

About

2025 관광데이터 활용 공모전 장려상 수상 - 강원도 계곡 여행 플랫폼

Resources

Stars

Watchers

Forks

Languages