걸을수록 지도의 안개가 걷히는 Fog of War 탐험형 관광 웹 서비스
사용자가 실제로 이동한 경로를 따라 지도의 안개가 실시간으로 해제되고, 숨겨진 명소를 발견하며 퀘스트를 수행하는 게임형 관광 플랫폼입니다. 외국인 관광객을 주요 타겟으로 4개 언어(한국어·영어·일본어·중국어)를 지원합니다.
- Fog of War 지도 탐험 — GPS를 10초 간격으로 수집해 이동 궤적을 따라 안개를 해제하고, 해제된 구역의 장소를 자동 발견
- 퀘스트 · 레벨 시스템 — 장소 방문 퀘스트, 경험치·레벨·칭호·뱃지로 탐험 동기 부여
- 혼잡 지역 표시 — 한국관광공사 방문자 집중률 데이터와 사용자 데이터를 결합해 혼잡 구역 시각화
- 실시간 장소 추천 — 사용자 이동·방문 이력 기반 추천
- 다국어 지원 — 한국어 / English / 日本語 / 中文
- 탐험 통계 대시보드 — 방문 장소 수, 이동 거리, 탐험 면적(%) 시각화
[Vue 3 + Kakao Map SDK] ←─ REST ─→ [Django API]
│ │
│ GPS 위치 (10초 간격) │
▼ ▼
Kafka ──▶ Flink (실시간 스트림 처리) ──▶ PostgreSQL · Redis
Airflow (배치 파이프라인)
├─ 한국관광공사 TourAPI 관광지 데이터 수집 (다국어)
├─ 장소 임베딩 생성
└─ Elasticsearch 인덱싱 (장소 검색)
Spark · Hadoop — 대용량 배치 분석
| 영역 | 기술 |
|---|---|
| Frontend | Vue 3, Vite, Pinia, Kakao Map SDK |
| Backend | Django, Django REST Framework |
| 실시간 처리 | Kafka, Flink |
| 배치 파이프라인 | Airflow, Spark, Hadoop |
| 저장소 | PostgreSQL, Redis, Elasticsearch, MinIO |
| 인프라 | Docker Compose |
| 외부 데이터 | 한국관광공사 TourAPI, Kakao Maps API |
.
├── collectors/ # 혼잡도 데이터 수집 스크립트
├── docs/ # 기획·설계 산출물
│ ├── project_plan.md # 서비스 기획서 · 기능 명세
│ ├── database/ # ERD, 테이블 정의서
│ └── reference/ # 참고 자료
└── infra/
├── docker-compose.yml # 전체 스택 진입점 (서비스별 compose include)
├── compose/ # 서비스별 compose 정의 (kafka, flink, airflow, ...)
├── docker_image/ # 커스텀 도커 이미지 (Flink 등)
└── volumes/ # 컨테이너 마운트 소스
├── django/ # 백엔드 애플리케이션
├── vue/vue-project/ # 프론트엔드 애플리케이션
└── airflow/dags/ # 데이터 파이프라인 DAG
# 인프라 (API 키, Airflow 설정)
cp infra/compose/.env.example infra/compose/.env
# 프론트엔드 (Kakao Map JavaScript 키)
cp infra/volumes/vue/vue-project/.env.example infra/volumes/vue/vue-project/.env각 파일을 열어 Kakao Developers 키, 한국관광공사 TourAPI 키 등을 채워주세요.
cd infra
docker compose up -d| 서비스 | 주소 |
|---|---|
| 프론트엔드 | http://localhost:5173 |
| Django API | http://localhost:8000 |
| Airflow UI | http://localhost:8080 |
| Flink 대시보드 | http://localhost:8081 |
| Elasticsearch | http://localhost:9200 |
SSAFY 15기 관통 프로젝트