1.3 KiB
1.3 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= dashboard) 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,rulocales insrc/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
useUserStorewhen no avatar attachment is uploaded.
Key user flows
- Login →
localStoragegetstoken,user,profile,attachments→ router guard-free navigation (no global guard; 401 responses redirect to login). - Upload workout: pick file → backend parses FIT/GPX →
workout_itempage renders data. - Public workout: shareable
public/workouts/:idroute without auth.