28 lines
1.3 KiB
Markdown
28 lines
1.3 KiB
Markdown
# 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`.
|