강원도 계곡 여행의 모든 것 - 계곡 정보 조회, AI 기반 테마별 계곡 추천, 커뮤니티 소통, 여행 일정 공유를 제공하는 계곡 여행 전문 플랫폼
🏆 2025 관광데이터 활용 공모전 장려상 수상 (한국관광공사 x Kakao 주관)
- 강원도 계곡 데이터 - Tour API 연동을 통한 실시간 계곡 정보 제공
- 상세 정보 조회 - 위치, 이미지, 편의시설 등 상세 정보 확인
- 시군구별 필터링 - 지역별 계곡 탐색
- Spring AI + Gemini 기반 개인화 계곡 추천
- 키워드별 추천 - 트레킹, 캠핑, 가족여행 등 테마별 추천
- 주간 자동 업데이트 - 스케줄러를 통한 추천 데이터 갱신
- 일정 생성/관리 - 나만의 계곡 여행 일정 작성
- 에디터 픽 - 관리자 추천 폴레이리스트
- 리뷰 작성 - 계곡 방문 후기 및 사진 공유
- 댓글 & 좋아요 - 다른 사용자와 소통
- 카카오 소셜 로그인 - 간편한 회원가입
- JWT 인증 - 안전한 토큰 기반 인증
- 프로필 관리 - 닉네임, 프로필 이미지 수정
| 기술 | 버전 | 설명 |
|---|---|---|
| Java | 21 | 프로그래밍 언어 |
| Spring Boot | 3.5.3 | 웹 프레임워크 |
| Spring Data JPA | - | ORM |
| Spring Security | - | 보안 & 인증 |
| Spring AI | 1.0.1 | AI/LLM 통합 |
| 기술 | 설명 |
|---|---|
| MySQL | 주 데이터베이스 |
| Redis | 캐시 & 토큰 저장소 |
| H2 | 개발/테스트용 인메모리 DB |
| 기술 | 설명 |
|---|---|
| AWS S3 | 이미지 파일 저장소 |
| AWS CloudFront | CDN |
| Docker Compose | 로컬 개발 환경 |
| 기술 | 설명 |
|---|---|
| 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
| 엔티티 | 설명 |
|---|---|
| Member | 회원 정보 (카카오 소셜 로그인) |
| Valley | 강원도 계곡 정보 |
| FallayList | 사용자가 만든 여행 일정 |
| Schedule | 폴레이리스트 내 일별 일정 |
| Review | 계곡 방문 리뷰 |
| Keyword | 계곡 특성 키워드 (트레킹, 캠핑 등) |
| ValleyRecommendation | AI 기반 계곡 추천 |
이 프로젝트는 MIT 라이선스를 따릅니다.
계곡 여행의 새로운 경험을 만들어가는 Fallguys 팀입니다.
팀원:
Made with ❤️ by Team Fallguys