Skip to content

Latest commit

Β 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Olympus Analytics Engine

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.


Overview

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.


Goals

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.


Architecture

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/

oae-core

Shared primitives and foundational functionality.

Examples:

  • IDs
  • Time
  • Units
  • Configuration
  • Common errors

oae-data

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.

oae-analytics

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.

oae-storage

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.

oae-api

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

src/

The OAE executable.

The executable is responsible for assembling the components and starting the local OAE runtime.

Eventually, this will power:

olympus analytics

Web Interface

The 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.


Data Formats

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

Analytics

The analytics engine is designed to grow incrementally.

Initial areas include:

Performance

  • Power records
  • Heart-rate records
  • Pace records
  • Power-duration analysis
  • Personal best detection
  • Historical performance

Recovery

  • HRV tracking
  • Resting heart rate tracking
  • Baseline calculation
  • Historical trends

Training

  • Training load
  • Intensity
  • Zone distribution
  • Session comparison
  • Long-term trends

Anomalies

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.


Local-First Architecture

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.


Development

Backend

Requirements:

  • Rust
  • Cargo

Build the workspace:

cargo build

Run tests:

cargo test

Run OAE:

cargo run

Frontend

Requirements:

  • Node.js
  • npm
cd web
npm install
npm run dev

The Vite development server provides the frontend during development.


Development Roadmap

Foundation

  • DracoLIX integration
  • FIT support
  • ERG support
  • ZWO support
  • Olympus data models
  • Data normalization
  • Data validation
  • SQLite storage

Analytics Engine

  • 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

API

  • REST API
  • WebSocket API
  • OpenAPI specification
  • Live telemetry
  • Activity endpoints
  • Analytics endpoints
  • Athlete endpoints

Web

  • OAE dashboard
  • Activity viewer
  • Analytics views
  • Performance records
  • Anomaly interface
  • Training history
  • Athlete profile
  • Settings
  • Variable Abstraction Layer

Olympus Integration

  • olympus analytics
  • Automatic OAE startup
  • Browser auto-launch
  • Terminal ↔ OAE integration
  • Live device data
  • Session control

Design Principles

Local-first

Training data should remain on the user's machine by default.

Data over decoration

Analytics should provide meaningful information rather than simply generating more metrics.

Transparent analytics

Users should be able to understand where an analytical result comes from.

Modular

Analytics, storage, API, and presentation should remain independently replaceable.

Extensible

OAE should provide a foundation for future Olympus and DragonSuite applications.

Performance

Large training datasets and time-series calculations should remain responsive even as the athlete's history grows.


Relationship to Olympus

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.


Status

Early development.

The architecture and APIs are subject to change as the Olympus ecosystem develops.


License

See LICENSE for licensing information.


Part of Draconis Engineering

Olympus Analytics Engine is developed as part of the Draconis Engineering ecosystem.

About

A powerful analytics platform for the Olympus Trainer and the Draconis Ecosystem πŸ‰

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages