Files
shop-server/.cursor/rules/craftshop-core.mdc
T
@kirill.komarov ebe1ede25c base commit
2026-05-04 12:34:01 +05:00

31 lines
2.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
description: Основной промт/правила для проекта craftshop (client+server, FSD, ESLint/Prettier)
alwaysApply: true
---
# Craftshop: постоянный промт для агента
## Контекст и цель
- Проект: магазин изделий ручной работы (витрина + админка для загрузки/редактирования данных).
- ОС: Windows. Отвечать пользователю **по-русски**.
## Стек и структура
- **Frontend**: Vite + React + TypeScript, axios, @tanstack/react-query, MUI.
- **Архитектура фронта**: **FSD** (`app/pages/widgets/features/entities/shared`), alias `@` → `client/src`.
- **Backend**: Node.js + Fastify + Prisma + SQLite.
- Данные управляются через фронтенд‑админку; доступ к админ‑API проверяется серверным `verifyAdmin` (JWT пользователя + совпадение `request.user.email` с `ADMIN_EMAIL`).
## Правила работы с кодом
- Всегда придерживаться **FSD границ**: нижние слои не импортируют верхние.
- Для запросов: использовать `apiClient` (axios) и **React Query** (queryKey стабильные, invalidate после мутаций).
- UI: использовать компоненты **MUI**, без “самописного” дизайна там, где есть готовые компоненты.
- Не добавлять зависимости без необходимости; если добавляешь — ставь последние стабильные версии и обновляй README при изменении запуска/скриптов.
## Качество и запуск
- После изменений на фронте: `client` → `npm run lint` и при необходимости `npm run lint:fix`, затем `npm run format:check`.
- Форматирование: Prettier конфиги лежат в `client/.prettierrc.json`, `.prettierignore`, `.editorconfig`.
## Бэкенд соглашения
- Не ломать публичные роуты `/api/categories`, `/api/products`.
- Админ‑роуты должны возвращать понятные ошибки (400/401/404/409) и валидировать входные данные.