# Project Brief — Strava Frontend (cycle-rider) ## What is this project Vue 3 SPA frontend for the "cycle-rider" (Strava-like) cycling application. It is the web client for the FastAPI backend located at `../` (backend repo, same monorepo parent). Production host: `https://cycle-rider.ru`. ## Core goals - Display a public feed of workouts (dashboard), routes, and public/private workout detail pages with charts (speed, power, heart rate, elevation) and Yandex Maps route rendering. - Provide workout upload (FIT/GPX files) and attachment management. - Provide user auth (JWT Bearer + Google/Yandex OAuth via backend), profile/preferences pages. - Internationalization with Russian as default/fallback locale. ## Key requirements - Vue 3 (Composition/Options API as present) + TypeScript, strict mode. - Vuestic UI component library + Tailwind CSS for styling. - Pinia for state management. - vue-router with lazy-loaded pages. - Axios instances (`axiosAuth` with Bearer token interceptor, `axiosPublic`) injected via `app.provide`. - All API endpoints live under `/api/v0` on the backend. - No local backend mock — the frontend always talks to the real API host. ## Non-goals - No SSR; static SPA served behind nginx (see `nginx.conf`). - No test runner configured in this repo (no vitest/jest) — verification is `yarn lint` + `yarn build`.