1.6 KiB
1.6 KiB
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 (
axiosAuthwith Bearer token interceptor,axiosPublic) injected viaapp.provide. - All API endpoints live under
/api/v0on the backend. - No local backend mock — the frontend always talks to the real API host.
Non-goals
- No test runner configured in this repo (no vitest/jest) — verification is
yarn lint+yarn build.
SSR / SEO
- Express server (
server/) renders SEO-critical pages: landing (/),/explore,/routes,/public/workouts/:id,/sitemap.xml,/robots.txt. - Nginx proxies these routes to the SSR server (port 3001); all other routes serve the SPA (
dist/index.html). - Production host:
https://cycle-rider.ru(envSSR_BASE_URL).