Skip to content
ricardoyang00Public

About

A cycling data analyser with personal AI coach

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Pace.ai Logo

Pace.ai

A completely local, self-hosted cycling analytics and coaching dashboard.

Python FastAPI React LM Studio

Pace.ai Dashboard Poster


Pace.ai takes your raw .fit and .gpx files and turns them into actionable training advice without sending any of your data to the cloud. It calculates standard metrics like TSS, IF, and Normalized Power natively, tracks your fatigue, and uses a local LLM to generate professional coaching insights.

✨ Why Pace.ai?

  • 🔒 100% Offline & Private: Your GPS tracks and health data never leave your machine.
  • ⚡ Smart Analytics: Automatically calculates power curves, HR zones, and detects when your FTP goes up.
  • 🧠 AI Coach: Connects to your local LLM to give you daily ride reviews and training plans.
  • 💸 No Subscriptions: It's yours forever.

🛠️ Prerequisites

  • Docker (Recommended for easiest setup)
  • Python 3.10+ & Node.js (Only if you prefer manual bare-metal setup)
  • LM Studio (Optional: for AI Coaching features)

🤖 AI Coach Setup (Optional)

To use the AI Coach, you can either run a local LLM or plug in a cloud API key (like OpenAI).

Using Local Models (via LM Studio)

  1. Download LM Studio.
  2. Search and download a good Instruct model based on your hardware. We recommend (2026):
    • Light: Phi-4-mini-Instruct (3.8B - extremely fast and efficient)
    • Medium: Qwen-3-30B-Instruct (The sweet spot for reasoning and coaching logic)
    • Heavy: GPT-OSS-120B-Instruct or DeepSeek-V4-Pro (Frontier-level intelligence for massive context)
  3. Go to the Local Server tab in LM Studio.
  4. Select your downloaded model and start the server on port 1234 (the default).

Using Cloud Models (e.g. OpenAI GPT-4o) If you don't want to run models locally, you can simply go to the Settings page in Pace.ai, select "OpenAI API", and paste your API key. No LM Studio required, but your data will not be offline.

🚀 Quick Start (Docker)

The easiest way to get everything running is with Docker Compose. This automatically spins up the backend, frontend, and database.

docker compose up --build

Once it builds, open http://localhost:8000 in your browser.

Note

Docker is already configured to automatically find your local LM Studio instance at host.docker.internal:1234

💻 Manual Setup

If you'd rather run it bare-metal:

1. Build the frontend UI

cd frontend
npm install
npm run build
cd ..

2. Start the backend server

python -m venv venv
source venv/bin/activate
pip install -r backend/requirements.txt
uvicorn backend.main:app --host 0.0.0.0 --port 8000

Then visit http://localhost:8000.

Tip

You can also use uv instead of standard pip for much faster dependency installation: uv run --with-requirements backend/requirements.txt uvicorn backend.main:app --host 0.0.0.0 --port 8000


👨‍💻 Development Mode

Working on the code? You can run the backend and frontend separately for live-reloading.

Backend

You'll need a Python virtual environment with dependencies installed:

python -m venv venv
source venv/bin/activate
pip install -r backend/requirements.txt
uvicorn backend.main:app --reload --port 8000

Tip

You can optionally use uv for much faster setup: uv venv && source .venv/bin/activate && uv pip install -r backend/requirements.txt && uv run uvicorn backend.main:app --reload --port 8000

Frontend

Run the Vite development server with hot-module replacement (HMR):

cd frontend
npm install
npm run dev

Open http://localhost:5173 and the Vite server will seamlessly proxy API calls to your Python backend running on port 8000.

About

A cycling data analyser with personal AI coach

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages