- CORS_ORIGIN: несколько origin через запятую; комментарии в .env.example
- Версия бэкенда: APP_VERSION, безопасное чтение package.json, футер при пустой версии
- Сообщения API: unknown_error и ответы 401/403/404 без JSON; отладочный лог при !ok
- Статус «внесите результат» для прошедшей даты + блок на карточке старта и стили
- API: дата старта всегда YYYY-MM-DD; фронт: parseRaceDate без двойного T00:00:00
- GET /health с version из package.json; Vite define __FRONTEND_VERSION__
- Футер с версиями клиента/сервера (BEM), сетка app-shell на три ряда
- AbortController для карточки старта; ретраи GET при 502–504 и понятные ошибки шлюза
- Русские подписи навигации/страниц, lang=ru, без английских фраз в интерфейсе
- Remove dead frontend/src/features/index.ts (empty export, unused)
- RaceRow: created_at/updated_at typed as Date to match pg TIMESTAMPTZ runtime
- rowToDto: explicit toISOString() conversion instead of relying on JSON.stringify
- Mock DB: return Date objects for timestamp fields to match real pg behavior
Made-with: Cursor
- RaceDetailsPage: show all non-null fields (officialUrl, startTime, clusterSchedule, bibPickup)
- RaceDetailsPage: add edit link and delete button with confirmation banner
- RaceFormPage: universal create/edit form with validation, auto-generated id for new races
- Router: add /races/new and /races/:raceId/edit routes
- AppLayout: add navigation link to create new race
- CSS: buttons (primary/secondary/danger), form fields, confirm banner, responsive layout
Made-with: Cursor
- README: separate dev (npm run dev) and production (npm run build && npm start) steps
- FRONTEND_PLAN: mark backend-dependency-task as completed (finishPlace already in API)
- Remove dead references to missing agent-frontend-ui-instructions.md from PLAN.md and FRONTEND_PLAN.md
Made-with: Cursor
- Add missing --space-1 CSS token used by filter and detail components
- Fix active nav link losing styles on hover (CSS specificity)
- Correct Russian day pluralization (21 день, 22 дня, 25 дней)
- Show filter error banner even when stale race data is present
- Add cross-env for Windows-compatible npm test
- Add global JSON error handler in Express for malformed request bodies
- Replace stateless mock DB with in-memory store for correct DELETE/UPDATE behavior
Made-with: Cursor
- Remove PLAN/agent instruction files; single root .env.example for DB + API
- Stack compose uses env_file .env; delete stack env example duplicate
- Refresh README, backend docs, API doc; trim gitignore/dockerignore
Made-with: Cursor
- docker-compose.stack.env for DB_* and CORS (gitignored)
- docker-compose.stack.env.example with placeholders
- .dockerignore excludes local stack env from build context
Made-with: Cursor
Express + TypeScript backend with PostgreSQL: CRUD endpoints for /races (GET list with year/month filters, GET by id, POST, PATCH, DELETE), health/readiness probes, SQL migration runner, seed script with upsert from CSV, camelCase/snake_case mapper, CORS, env validation, docker-compose, and API docs for frontend.
Made-with: Cursor