Local-first analytics and data platform for Olympus.
Olympus Analytics Engine (OAE) is the analytical backbone of the Olympus ecosystem. It provides data processing, storage, analytics, and a local web interface for exploring training and performance data.
OAE is designed around a simple principle:
Your data stays local.
No cloud account. No mandatory synchronization. No external processing.
OAE sits between Olympus data and the user-facing analytics interface.
OLYMPUS
β
βββββββββββ΄ββββββββββ
β β
Olympus Terminal OAE
β β
Device / Session Analytics
β Storage
β API
β β
βββββββββ¬ββββββββββ
β
SQLite
β
βΌ
Local Web Server
β
βΌ
React + Vite
β
βΌ
Browser
The backend is written in Rust, while the user interface is built with React, TypeScript, and Vite.
OAE aims to provide:
- Local-first training data storage
- High-performance analytics
- A unified Olympus data model
- Support for multiple training data formats
- Historical performance analysis
- Anomaly detection
- Athlete and session analytics
- A modern engineering-focused user interface
- A stable API for future Olympus and DragonSuite applications
OAE should prioritize useful analysis over metric overload.
OAE is structured as a Rust workspace with a separate web frontend.
oae/
βββ crates/
β βββ oae-core/
β βββ oae-data/
β βββ oae-analytics/
β βββ oae-storage/
β βββ oae-api/
β
βββ src/
β βββ main.rs
β
βββ web/
β βββ React + TypeScript + Vite
β
βββ docs/
Shared primitives and foundational functionality.
Examples:
- IDs
- Time
- Units
- Configuration
- Common errors
The canonical Olympus data model.
This crate defines how OAE represents:
- Activities
- Workouts
- Athletes
- Sensors
- Time-series data
- Power
- Heart rate
- Cadence
- Pace
- Sport-specific data
The goal is to provide a common representation independent of the original data format.
The analytical engine.
Potential modules include:
- Power analysis
- Heart-rate analysis
- Training load
- Performance records
- HRV
- Resting heart rate
- Power-duration curves
- Anomaly detection
- Historical trends
Analytics should operate on Olympus data models rather than directly accessing storage or HTTP.
Persistence layer.
Responsible for:
- SQLite
- Database migrations
- Activity storage
- Athlete data
- Workout data
- Querying and persistence
SQLite acts as the local source of truth for OAE.
The interface between the OAE backend and external clients.
The primary consumer is the OAE web application.
Planned interfaces include:
- REST API
- WebSocket API
- Live telemetry
- Activity endpoints
- Analytics endpoints
- Athlete endpoints
- Record endpoints
- Anomaly endpoints
The OAE executable.
The executable is responsible for assembling the components and starting the local OAE runtime.
Eventually, this will power:
olympus analyticsThe OAE web interface is built using:
- React
- TypeScript
- Vite
- Bklit UI
The interface is intentionally designed around an engineering-oriented visual language rather than a conventional fitness-dashboard aesthetic.
The goal is to make OAE feel more like a performance engineering workstation than a generic fitness application.
OAE is intended to work with common training formats including:
- FIT
- ERG
- ZWO
These formats are normalized into Olympus's internal data model before being processed by the analytics engine.
FIT / ERG / ZWO
β
βΌ
Data Parser
β
βΌ
Olympus Data Model
β
βββ Storage
β
βββ Analytics
The analytics engine is designed to grow incrementally.
Initial areas include:
- Power records
- Heart-rate records
- Pace records
- Power-duration analysis
- Personal best detection
- Historical performance
- HRV tracking
- Resting heart rate tracking
- Baseline calculation
- Historical trends
- Training load
- Intensity
- Zone distribution
- Session comparison
- Long-term trends
OAE will track deviations from an athlete's historical baseline.
Potential examples include:
- Unusual heart-rate response
- Power/heart-rate relationship changes
- Unexpected performance changes
- Sensor anomalies
- Unusual training patterns
OAE should prefer transparent, data-backed analysis over opaque scores.
OAE is designed to run entirely on the user's machine.
ββββββββββββββββββββββββββββββββ
β User Device β
β β
β Olympus β
β β β
β βΌ β
β OAE Backend β
β β β
β βββ Analytics β
β βββ SQLite β
β βββ API β
β β β
β βΌ β
β Local Browser β
ββββββββββββββββββββββββββββββββ
The web interface communicates with the local OAE backend through localhost.
OAE does not require a remote server to perform its core functionality.
Requirements:
- Rust
- Cargo
Build the workspace:
cargo buildRun tests:
cargo testRun OAE:
cargo runRequirements:
- Node.js
- npm
cd web
npm install
npm run devThe Vite development server provides the frontend during development.
- DracoLIX integration
- FIT support
- ERG support
- ZWO support
- Olympus data models
- Data normalization
- Data validation
- SQLite storage
- Power analytics
- Power record tracking
- Heart-rate analytics
- HRV tracking
- Resting heart-rate tracking
- Training load
- Zone analysis
- Historical trends
- Anomaly tracking
- Power-duration curves
- REST API
- WebSocket API
- OpenAPI specification
- Live telemetry
- Activity endpoints
- Analytics endpoints
- Athlete endpoints
- OAE dashboard
- Activity viewer
- Analytics views
- Performance records
- Anomaly interface
- Training history
- Athlete profile
- Settings
- Variable Abstraction Layer
-
olympus analytics - Automatic OAE startup
- Browser auto-launch
- Terminal β OAE integration
- Live device data
- Session control
Training data should remain on the user's machine by default.
Analytics should provide meaningful information rather than simply generating more metrics.
Users should be able to understand where an analytical result comes from.
Analytics, storage, API, and presentation should remain independently replaceable.
OAE should provide a foundation for future Olympus and DragonSuite applications.
Large training datasets and time-series calculations should remain responsive even as the athlete's history grows.
OAE is a separate component of Olympus and is intended to complement Olympus Terminal.
Olympus Terminal
ββββββββββββββββ
Devices
Sessions
Control
CLI
Local interaction
Olympus Analytics Engine
βββββββββββββββββββββββ
Data
Storage
Analytics
Visualization
API
Performance history
Terminal and OAE may be used independently, while sharing common Olympus data models and infrastructure where appropriate.
Early development.
The architecture and APIs are subject to change as the Olympus ecosystem develops.
See LICENSE for licensing information.
Olympus Analytics Engine is developed as part of the Draconis Engineering ecosystem.