AdventureTubeData: How Data Serves iOS & Web Clients

Overview

The adventureTubeData MongoDB collection is the core geospatial dataset powering both iOS and Web clients. It contains 39 documents mapping YouTube videos to geographic locations with chapters.

  • 4 original manually-created documents
  • 35 auto-generated from chris_video + victoria_camping_sites + YouTube Data API v3

API Endpoint

GET https://api.travel-tube.com/web/geo/data

This endpoint returns all adventureTubeData documents to both iOS and Web clients.


Request Flow (3-Service Chain)

Client (iOS/Web)
    │
    ▼
Gateway Service (8030)
    │  route /web/** → web-service
    ▼
Web Service (8040)
    │  REST call /geo/data via Eureka
    ▼
Geospatial Service (8060)
    │  Query adventureTubeData collection
    ▼
MongoDB → 39 documents
    │
    ▼ (response flows back)
Geospatial → Web → Gateway → Client (200 OK + all data)

Zipkin Distributed Trace

Zipkin Trace: gateway-service → web-service → geospatial-service

  • Total Duration: 471ms
  • Services: 3
  • Total Spans: 13
  • Outcome: SUCCESS
Service Span Duration
gateway-service http get /web/geo/data 471ms
web-service http get /web/geo/data 383ms
web-service security filterchain before 5.9ms
web-service authorize request 1.3ms
web-service secured request 351ms
web-service http get (to geospatial) 290ms
geospatial-service http get /geo/data 241ms
geospatial-service security filterchain before 9.5ms
geospatial-service authorize request 2.8ms
geospatial-service secured request (MongoDB query) 213ms

The heaviest span is geospatial-service’s MongoDB query at 213ms, fetching all 39 adventureTubeData documents.


Gateway Route Configuration

// GatewayConfig.java
.route("web-service", r -> r.path("/web/**")
    .filters(f -> f.filter(filter))
    .uri("lb://web-service"))

Data Model: adventureTubeData

Each document contains:

Field Type Description
youtubeContentID String YouTube video ID
youtubeTitle String Video title from YouTube API
youtubeDescription String Video description from YouTube API
userContentType String Category (e.g. “National Parks”)
userTripDuration String Trip length (e.g. “daytrip”)
places[] Array GeoJSON Point locations with name, placeID
chapters[] Array Video chapters with youtubeTime, categories, place
coreDataID UUID Unique identifier

Data Population Script

scripts/victoria-to-adventuretube.py — joins chris_video + victoria_camping_sites, enriches via YouTube Data API v3, inserts into adventureTubeData.

Backup: scripts/adventureTubeData-backup.json (39 docs)

Restore command:

mongoimport --uri="mongodb://strider:****@travel-tube.com:27017/adventuretube?authSource=admin" \
  --collection=adventureTubeData --jsonArray --file=scripts/adventureTubeData-backup.json --drop

Created: 2026-03-02

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top