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

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 (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 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 (env SSR_BASE_URL).