All projects

Fitness / AI

RunMate

An AI running coach on top of your Strava history

runmate.net
RunMate — Fitness / AI

The problem

What it solves

Serious amateur runners pile up years of workouts in Strava and get almost nothing actionable back — Strava says what you did, not whether it was good or what to do next. RunMate ingests the full history, including splits, heart-rate zones and best efforts, and answers the questions Strava does not: how a 5K compares to the world record, whether a goal race is on track, what this week's training and strength work should look like. Four LLM agents — Coach, Analyst, Recovery and Triage — turn that data into plans and reports on the web and in a native Android app.

Day one

What the boilerplate supplied

Before a line of RunMate was written, these 9 packages were already working — auth with RBAC, a typed database layer, Redis caching, transactional email, shared types, the component library, and the setup CLI.

authcachedbemailentitiesuiclieslint-configtypescript-config

That was the baseline RunMate forked from. ShipKit ships 18 packages and 7 apps today, so some of what follows is now included out of the box.

On top

What this project added

Packages

aianalyticsdesign-tokensqueuestrava

Apps

mobileworker

ai, analytics, queue, worker are in ShipKit today — RunMate predates that and had to write them.

  • packages/strava — a full integration layer, not one API call: REST client, incremental and historical sync, OAuth token refresh, push-webhook processing, and scripts for backfilling splits, heart-rate zones and best efforts. Strava is also the primary sign-in provider.
  • packages/ai + apps/api/src/modules/v1/ai — four named agents on the Vercel AI SDK with streaming chat across 19 routes, conversations persisted over four tables, and per-user AI credits metered on every call.
  • apps/mobile — a shipped Expo 55 / React Native app with a six-tab navigator and three native home-screen widgets (metronome, pace, timer) backed by a custom native storage module.
  • apps/api/src/modules/v1/benchmarks — the comparison engine, computing percentiles from raw result sets against a world_records table sourced from World Athletics.
  • apps/worker + packages/queue — a separate BullMQ process running four workers, so Strava syncing and recommendation generation stay off the request path.

Wired in

Integrations and stack

Third-party services

Strava OAuth sign-in, REST API and push webhooksPolar.sh checkout and webhooksGoogle Play Billing, with Real-Time Developer NotificationsVercel AI Gateway (Anthropic and Google models)PostHog analyticsSentry crash reporting on mobileTimescaleDB continuous aggregates

Stack

Next.js 16Elysia + Eden TreatyBun 1.3PostgreSQL + TimescaleDBDrizzle ORMBetter AuthRedis + BullMQExpo 55 / React NativeVercel AI SDKTailwind CSS 4

Measured

By the numbers

43

Database tables

16

API modules serving routes

14

Workspace packages

5

Apps in the monorepo

Counted from the repository, not estimated.

More

Other apps on the same boilerplate

astervis.io
Astervis — Licensing & Commerce

The commercial control plane for a self-hosted analytics product: checkout, license keys, a server registry, installer distribution, and a hosted AI gateway.

Licensing & CommerceCase study
vgr.uz
VGR.uz — E-Commerce

A four-app commerce platform for Uzbekistan: trilingual storefront, admin back-office, local payment rails, and a native courier app for last-mile delivery.

E-CommerceCase study
provaqt.com
Provaqt — HR / Workforce

Attendance and payroll for shift teams. Staff clock in from Telegram or a native app, verified by face recognition and a GPS geofence; verified shifts become same-day pay.

HR / WorkforceCase study

Start building your product today.

The setup is done. Auth works. Payments work. Just add your idea.

Get ShipKit — $149