@yourhandleLet’s talk
← Back to portfolio

Strava Dashboard — Portfolio Preview

A personal analytics platform for Strava activities. This page gives an inside look at the capabilities and architecture without requiring OAuth login.

View Live App (auth required)Get in touchNext.js 14TypeScriptNode.js • Express • MongoDB

What you get

A quick overview of the experience and value.

📈

Insightful Analytics

Distance, time and elevation summaries, pace trends, personal records and monthly breakdowns.

🔄

Smart Sync

Full, incremental or recent sync strategies based on last import and activity volume.

🧠

Performance-aware

Pagination at 200/items with considerate rate limiting and request timeouts to keep things smooth.

🔐

Security-first

OAuth with Strava, stateless JWT, encrypted tokens at rest, strict CORS and secure headers.

🧩

Modular Architecture

Typed services and controllers, clean data transforms, and focused UI sections.

🐳

Dockerized Setup

One command to run frontend, backend and MongoDB via Compose.

Architecture

A pragmatic stack with a strong separation of concerns.

System diagram

Next.js 14 FrontendExpress APIMongoDBStrava API
  • Frontend: Next.js 14, React 18, Tailwind CSS, App Router
  • Charts: Recharts for pace and monthly trends
  • Backend: Node.js, Express, Helmet, CORS
  • Database: MongoDB with Mongoose models
  • Auth: OAuth with Strava + stateless JWT
  • Packaging: Docker Compose for dev

Sync strategies

Full sync

Fetches all activities via paginated requests when onboarding or after a long gap.

Incremental sync

Imports activities since the last known activity date to keep the DB up to date.

Recent sync

Gets the most recent page for a quick refresh.

Security & resilience

  • Encrypted Strava tokens at rest (per user)
  • JWT-based auth, no server-side sessions
  • Helmet security headers and strict CORS
  • Graceful MongoDB shutdown hooks
  • API timeouts and 401/429 handling

UI previews

Representative placeholders for analytics views.

Dashboard overview (KPIs, recent activities)
Pace chart (last 30 runs)
Monthly progress (runs & km per month)

Want a quick walkthrough?

I can demo syncing, analytics and the codebase in a short call. No login required for the demo.

This project is not affiliated with or endorsed by Strava.