JoyAnalyze reference
JoyAnalyze V1.0 / V2.0 / V3.0
JoyAnalyze is the multi-source cycling-data accuracy & performance comparison toolbox inside JoyVelo. Five PRD sub-modules cover project management, data alignment, visual comparison, segment analysis, and stats / export / share. All parsing happens in the browser — your .fit / .gpx / .tcx files never leave your device.
The 5 sub-modules
Every JoyAnalyze sub-module belongs to one of the three product tiers (free / Pro / Pro+). The table below shows which feature lands at which tier so you know what unlocks when.
All projects in one place. Card / list view, filter by name / date / file count, tag, set reference (基准) device, public / private toggle, batch delete + export. Free: 2 streams · Pro: up to 20 streams.
| Free | Create / delete / public-private toggle, 2 streams per project |
| Pro | + 20 streams per project, batch ops, batch export |
| Pro+ | + Team project sharing |
FIT / TCX / GPX / PWX / SRM / CSV / Zwift log parsing, automatic zero-power / anomaly / dropout cleaning, time-axis DTW alignment, GPS-trajectory spatial alignment for same-route rides (Pro+), per-file time offset with visual micro-adjust.
| Free | Time-axis alignment, manual offset |
| Pro | + GPS spatial alignment, custom cleaning rules, barometric alt priority |
| Pro+ | + Reverse-direction auto-detect |
Multi-metric overlay (power / HR / cadence / speed / elevation / radar) with zoom, pan, marquee zoom, hover crosshair + delta vs reference, smoothing slider 1s-60s. Specialty charts: Mean-Max Power, distance accumulation, L/R leg power, power histogram, GPS map overlay (Pro).
| Free | Power / HR / cadence / speed curves + hover + smoothing |
| Pro | + MMP curve, distance curve, L/R leg power, power histogram, GPS map overlay |
| Pro+ | + SVG vector export |
Four ways to create a segment: canvas drag-select, map box-select, auto-detect (climb ≥3% ≥30s, interval ≥90% FTP ≥20s, sprint peak ≥120% FTP), equal-split by time / distance. Per-segment NP / IF / TSS / HR drift / VAM / CdA panel. Route-segment template reuse.
| Free | Manual canvas drag + auto-detect |
| Pro | + Map box-select + equal-split + segment templates |
| Pro+ | + Cross-project segment templates |
Bottom summary table (power / HR / cadence / distance / elevation / data quality), per-power-band deviation vs reference, Bland-Altman plot, Z1-Z7 power-zone distribution, radar taillight detection stats. PNG 2x/4x export, SVG export (Pro), PDF report (Pro+), iframe embed code, public share link with 24h / 7d / permanent TTL.
| Free | Summary table + per-power-band deviation |
| Pro | + 2x/4x PNG export, SVG export, public share link, iframe embed |
| Pro+ | + PDF report, custom brand logo, open API |
Quick routes
The JoyAnalyze sidebar (in the left rail of every /joyanalyze/* page) lists them all. Below are the direct deep links for power users.
V1.0 · V2.0 · V3.0 feature breakdown
The product is split into three tiers per the JoyAnalyze PRD §五. The numbers below are the actual feature flags stored in lib/joyanalyze-permissions.ts — that file is the source of truth, this page is the human-readable mirror.
V1.0 基础免费版 (Free)
- Project create / delete / public-private (
stream_slots_3) - FIT / TCX / GPX upload + parse, up to 2 streams per project
- Basic cleaning: zero-power dropouts, anomalies, gap detection
- Time-axis alignment + manual per-file offset (seconds)
- Basic curve canvas: power / HR / cadence / speed, zoom / pan / hover / smoothing 1s-60s
- Aero / CdA, bias / dynamic-response, Mahalanobis outlier detection (aero_lab, bias_lab, mahr)
- Read-only Open API access (api_tokens_read)
V2.0 增强版 (Pro)
- Up to 20 streams per project (stream_slots_20)
- PWX / SRM / CSV / Zwift log formats in addition to FIT/TCX/GPX
- JoyOne activity library one-click import
- GPS-trajectory spatial alignment with reverse-direction auto-detect
- Custom cleaning thresholds (zero-power, anomaly, dropout)
- Mean-Max Power curve, distance accumulation, power histogram, L/R leg power
- GPS satellite / street map overlay, canvas ↔ map bidirectional zoom
- Segment auto-detect (climb / interval / sprint) + map box-select + equal-split + segment templates (segment_templates)
- Full summary table (power / HR / cadence / distance / data quality) + per-power-band deviation
- 2x / 4x super-sample PNG export, SVG vector export
- Public share link (24h / 7d / permanent) + iframe embed
- Write API access (api_tokens_write), batch upload (batch_upload)
V3.0 专业版 (Pro+)
- One-click PDF comparison report with custom cover + brand logo (pdf_reports)
- Team project sharing, multi-user collaboration, data-point comments (team_comments)
- Webhooks: HMAC-signed events on analysis complete (webhooks)
- Dynamic-response speed analysis: latency + overshoot in power step events
- Cross-project segment template library
- Cross-project activity feed + tag-grouped project view (Team Dashboard)
- API: /api/v1/activities +
/api/v1/activities/export+/api/v1/segments/search
Alignment engine — how it works
JoyAnalyze uses Dynamic Time Warping (DTW) for time-axis alignment. Every non-reference stream is warped onto the reference stream's timeline, so curves line up correctly even if one device dropped samples or paused mid-ride. The output is a per-stream dtwCost (lower = better agreement), meanOffsetMs, and maxOffsetMs.
| Algorithm | Trigger | Output |
|---|---|---|
| Time-axis DTW | Default · indoor / same-field test | 1-second-precision warping + per-sample offset |
| GPS spatial (Pro+) | Same-route outdoor comparison | Mileage-axis normalisation + reverse-direction flip |
| Manual offset | Timezone drift, deliberate start delay | ± N seconds, drag-to-preview |
| Auto-clean (zero-power) | speed = 0 sustained ≥ 5s (configurable) | Grey-dashed overlay, excluded from stats |
| Anomaly filter | Δ power > 300 W / s sustained < 2 s | Marker preserved, excluded from averages |
Storage & privacy
All .fit / .gpx / .tcx parsing happens in the browser via Web Workers. Files never leave your device. Project metadata, settings, and segment annotations are stored in localStorage underjoyanalyze-projects-v1 (and a handful of sibling keys for the team / share-link / sensor-library modules).
Private projects are visible only in the current browser by default. Toggle the "public" flag to generate a share link; share links can be set to expire in 24h / 7d / permanent.
Pro+ users can wire their account to a server-side sync via the Open API (bearer token, see /docs/api). The sync is opt-in and never automatic.
Mandatory disclaimer
JoyAnalyze is a tool for hardware comparison, training review, and segment analysis. It is nota substitute for a professional bike fit, a coach's analysis, or a medical evaluation. All data is for reference only.
Power-meter and heart-rate-monitor accuracy is influenced by many factors JoyAnalyze does not model: ambient temperature, sensor battery age, ANT+ dropout, rider position, calibration drift. Treat the deviation numbers as a relative ranking, not an absolute verdict.