docs: expand lint scope batch46 (2 files)

This commit is contained in:
Apple
2026-02-16 07:41:44 -08:00
parent 4098649c59
commit 83decf0fc8
3 changed files with 80 additions and 79 deletions

View File

@@ -23,7 +23,7 @@
## 2. Архітектура проєкту
```
```text
src/
api/ // Typed API clients
components/ // UI components (buttons, inputs, modals)
@@ -34,7 +34,7 @@ routes/ // Route definitions
store/ // Zustand stores (optional)
styles/ // Global CSS/tokens
utils/ // Formatting, validation
```
```text
- `features/*` містять логіку конкретних модулів.
- `components/*` — лише dumb UI-компоненти (без бізнес-логіки).
@@ -51,18 +51,18 @@ utils/ // Formatting, validation
"strict": true
}
}
```
```text
### 3.2. Заборонено
* `any`
* `!` non-null assertion (за винятком рідкісних випадків)
* глобальний mutable state
- `any`
- `!` non-null assertion (за винятком рідкісних випадків)
- глобальний mutable state
### 3.3. API-типи
* Генеруємо типи з API Snapshot / OpenAPI.
* Типи для відповідей зберігаються в `src/api/types.ts`.
- Генеруємо типи з API Snapshot / OpenAPI.
- Типи для відповідей зберігаються в `src/api/types.ts`.
## 4. React Query (network layer)
@@ -87,31 +87,31 @@ export async function api<T>(path: string, options?: RequestInit): Promise<T> {
return res.json();
}
```
```text
### 4.2. Query Keys
```
```text
["teams"]
["teams", teamId]
["channels", teamId]
["messages", channelId]
["followups", teamId]
["projects", teamId]
```
```text
## 5. Стандарти компонентів
### 5.1. Іменування
* Компоненти: `PascalCase`
* Хуки: `useCamelCase`
* Файли: `camel-case.tsx`
* Папки: `kebab-case`
- Компоненти: `PascalCase`
- Хуки: `useCamelCase`
- Файли: `camel-case.tsx`
- Папки: `kebab-case`
### 5.2. Компонент повинен мати:
### 5.2. Компонент повинен мати
* Чіткий props-інтерфейс:
- Чіткий props-інтерфейс:
```ts
interface MyCompProps {
@@ -119,8 +119,8 @@ export async function api<T>(path: string, options?: RequestInit): Promise<T> {
onClick: () => void;
}
```
* Внутрішній стан не змішується з зовнішнім API-станом.
* Міжкомпонентна логіка виноситься в хуки (наприклад: `useMessages(channelId)`).
- Внутрішній стан не змішується з зовнішнім API-станом.
- Міжкомпонентна логіка виноситься в хуки (наприклад: `useMessages(channelId)`).
## 6. Обробка помилок
@@ -143,20 +143,20 @@ POST — без retry.
Всі тексти повинні бути в словнику:
```
```text
src/i18n/uk.json
src/i18n/en.json
```
```text
Формат ключів:
```
```text
onboarding.welcome_title
onboarding.next
chat.send
chat.input_placeholder
followup.create
```
```text
Форсувати одразу правильну структуру.
@@ -164,18 +164,18 @@ followup.create
### 8.1. Кольори
```
```text
--primary: #3F51F5;
--success: #43A047;
--error: #E53935;
--gray-100: #F8F9FA;
--gray-200: #ECEFF1;
--gray-800: #263238;
```
```text
### 8.2. Типографіка
* System font stack:
- System font stack:
`"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto`
### 8.3. Контрасти
@@ -184,12 +184,12 @@ followup.create
## 9. Робота з WebSockets
* Використовуємо один хук: `useChannelStream(channelId)`.
* WS підключається коли відкрито чат.
* Події:
- Використовуємо один хук: `useChannelStream(channelId)`.
- WS підключається коли відкрито чат.
- Події:
* `message.created`
* `message.updated`
- `message.created`
- `message.updated`
Не зберігати WS-стан у глобальному store.
@@ -197,11 +197,11 @@ followup.create
Що треба **вимкнути** у коді, щоб не перевантажити ранніх користувачів:
* Без drag'n'drop для файлів.
* Без реакцій (emoji).
* Без WYSIWYG редактора.
* Без Co-Memory (файли/документи), лише stub.
* Без granular RBAC.
- Без drag'n'drop для файлів.
- Без реакцій (emoji).
- Без WYSIWYG редактора.
- Без Co-Memory (файли/документи), лише stub.
- Без granular RBAC.
## 11. Патерни, які Cursor повинен дотримуватися
@@ -213,7 +213,7 @@ followup.create
## 12. Приклад робочого промта для Cursor
```
```text
You are a senior React/TS engineer.
Implement Step 2 of the onboarding flow (/onboarding).
@@ -226,7 +226,7 @@ Specs:
Please output:
- list of files to modify
- code diff
```
```text
## 13. Мета документа
@@ -234,8 +234,8 @@ Please output:
Він гарантує:
* узгоджений стиль,
* передбачуваний код,
* мінімум помилок,
* легку підтримку,
* зрозумілість структури для нових девелоперів.
- узгоджений стиль,
- передбачуваний код,
- мінімум помилок,
- легку підтримку,
- зрозумілість структури для нових девелоперів.