In Development

Ride Analytics

Cycling ride data analysis and course recommendations

ride-analytics
ride-analytics

The Problem

🔀

Scattered Ride Data

Ride data was fragmented across Strava, Garmin Connect, and local GPX files. No single platform provided a unified view of all riding history with consistent metrics and route information.

🗺️

No Route Analytics

Existing platforms showed individual ride maps but lacked aggregate route analysis — no heatmaps of frequently ridden roads, no segment-level performance comparison, and no data-driven route discovery.

👥

No Community Insights

Cyclists in the same region had no way to share route recommendations, compare performance on shared segments, or discover popular routes beyond word-of-mouth suggestions.

Before

Ride data scattered across multiple platforms and file formats

After

Unified dashboard with 4-stage data pipeline aggregating all ride sources

Before

Individual ride maps with no aggregate route intelligence

After

Route heatmaps and segment-level performance analysis on Kakao Maps

Before

Discovering routes only through word-of-mouth or trial rides

After

Data-driven course recommendations based on riding patterns and preferences

Approach

Multi-Stage Data Pipeline Architecture

Raw ride data flows through a 4-stage pipeline: Staging (ingest GPX/FIT files and normalize timestamps), Matching (identify repeated routes using GPS fingerprinting), Fingerprinting (extract segment-level features like elevation gain, average speed, and difficulty), and Curation (rank and recommend routes based on riding history and preferences). Each stage is idempotent and independently scalable. The pipeline processes EXIF metadata from ride photos to geo-tag images onto routes. Kakao Maps SDK renders the final visualization with performance overlays.

Define
Execute
Collect
Report

BDD Pipeline Flow

Key Features

ride-data-dashboard
ride-data-dashboard

Ride Data Dashboard

Comprehensive dashboard showing all ride statistics — distance, elevation, power, heart rate — with filterable views by date range, route, and ride type. Server/client component boundary optimization ensures fast initial load with interactive drill-downs.

route-heatmap
route-heatmap

Route Heatmap

Aggregate visualization of all ride routes on Kakao Maps, with color intensity indicating ride frequency. Identify your most-ridden roads, discover unexplored areas nearby, and visualize seasonal riding pattern changes.

performance-comparison
performance-comparison

Performance Comparison

Compare performance across rides on the same route — speed, power, and heart rate overlaid on the route map. Track segment-level improvements over time and identify sections where you're getting faster or slower.

course-recommendation
course-recommendation

Course Recommendation

AI-powered course suggestions based on your riding history, fitness level, and preferences (distance, elevation, scenery). Analyzes curated route data to recommend new routes that match your training goals and exploration interests.

Architecture

SSR + CSRDirect SQLMap RenderPipeline WriteFile Ingest
Browser
Next.js 15 (RSC)
Python Pipeline
Supabase (PostgreSQL)
Kakao Maps SDK
GPX / FIT Files
Client
Server
Database
Service
External

Results

4-stage
Data Pipeline

Stage → Match → Fingerprint → Curate

GPS
Route Fingerprinting

Automated repeated route detection via GPS matching

EXIF
Photo Geo-tagging

Ride photos auto-placed on routes via EXIF metadata

RSC
Server Components

Optimized server/client boundary for fast initial loads