31 lines
2.4 KiB
Plaintext
31 lines
2.4 KiB
Plaintext
---
|
||
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) и валидировать входные данные.
|