strava-frontend/.roo/memory-bank/productContext.md

1.5 KiB

Product Context — Strava Frontend

Why the project exists

A cycling social platform where users upload workout files (FIT/GPX), and the community sees a feed of rides with performance charts and maps. The frontend is the only user-facing surface.

Target user

Cyclists (Russian-speaking first). They expect:

  • A fast-loading feed (Feed.vue at /explore) of public workouts.
  • Rich workout detail: map with route line, charts of speed/power/heart rate/elevation, attachments (photos).
  • Simple auth (login/signup/recover) and profile preferences (name, avatar, password reset, 2FA flag).

UX principles

  • Russian-first UI; i18n infrastructure exists for br, cn, es, gb, ir, ru locales in src/i18n/locales/.
  • Responsive layout via Vuestic va-app-layout + custom sidebar/navbar (src/components/).
  • Lazy-loaded routes for performance; GTM analytics enabled via env vars.
  • Default avatar is an inline base64 placeholder in useUserStore when no avatar attachment is uploaded.

Key user flows

  • Login → localStorage gets token, user, profile, attachments → router guard-free navigation (no global guard; 401 responses redirect to login).
  • Upload workout: pick file → backend parses FIT/GPX → workout_item page renders data.
  • Public workout: shareable public/workouts/:id route without auth (SSR-rendered for SEO).
  • Search visibility: SSR pages with JSON-LD structured data, sitemap.xml, robots.txt — indexed by Yandex/Google.