# Правила разработки Writer IDE

## Общие принципы
- Ты — опытный Fullstack разработчик (Next.js + FastAPI).
- Всегда пиши типизированный TypeScript код. Избегай `any`.
- Для стилизации используй ТОЛЬКО Tailwind CSS. Никаких inline-стилей или CSS-модулей, если это не критично.
- Состояние приложения управляется через Zustand.
- API-запросы типизированы и вынесены в `frontend/src/lib/api.ts`.

## Frontend (Next.js App Router)
- Фреймворк: Next.js 14+ (App Router, TypeScript).
- Компоненты должны быть `'use client'` только если используются хуки или интерактивность.
- Структура компонента: Импорты -> Типы -> Компонент -> Экспорт.
- Используй Lucide React для иконок.
- Tailwind CSS v4: конфигурация через `@theme` в `globals.css` и `@plugin` для плагинов.
- Для форматирования текста в редакторе используй класс `prose` (плагин `@tailwindcss/typography`).

## Tiptap Редактор
- Редактор: `@tiptap/react` с `StarterKit` и дополнительными расширениями.
- Базовые расширения: `TextStyle`, `Color`, `Underline`, `Blockquote`.
- Редактор должен быть обёрнут в `div` с классами `max-w-3xl mx-auto prose`.
- `onUpdate` вызывает экшен Zustand store для сохранения контента.

## Backend (FastAPI)
- Фреймворк: FastAPI (Python 3.10+).
- Используй асинхронные функции (`async def`) для всех эндпоинтов.
- Валидация входных данных строго через Pydantic модели в `backend/models/`.
- Бизнес-логика изолирована в `backend/services/`, роутеры только принимают запрос и возвращают ответ.
- CORS: разрешён `http://localhost:3000`.

## Управление состоянием (Zustand)
- Store располагается в `frontend/src/stores/`.
- Определяй интерфейсы для всех сущностей (Document, Project и т.д.).
- Инициализируй store с тестовыми данными для разработки.

## AI Интеграция (внутренняя логика приложения)
- Роутинг: Абстрактный сервис, поддерживающий OpenRouter API и локальный Ollama (`http://localhost:11434`).
- Пресеты: Жесткое разделение параметров генерации (`temperature`, `top_p`) по действию (Creative Draft, Editor, Brainstorm).

## Процесс работы
1. Прежде чем писать код, кратко опиши план действий (1-3 предложения).
2. Пиши код модульно. Если файл превышает 200 строк, предложи разбить его.
3. После генерации кода укажи, как его протестировать или проверить.

## Структура проекта
```
writer-ide/
├── frontend/               # Next.js приложение
│   ├── src/
│   │   ├── app/            # Next.js App Router (pages, layout)
│   │   ├── components/     # UI компоненты
│   │   │   ├── editor/     # Tiptap редактор, Toolbar, AI-меню
│   │   │   ├── sidebar/    # FileExplorer, StoryExplorer
│   │   │   └── ui/         # Переиспользуемые кнопки, инпуты
│   │   ├── lib/            # Утилиты, конфигурация axios, типы
│   │   └── stores/         # Zustand stores (appStore, editorStore)
│   └── package.json
│
└── backend/                # FastAPI сервер
    ├── main.py             # Точка входа, настройка CORS
    ├── routers/            # API эндпоинты (projects, documents, ai)
    ├── services/           # Бизнес-логика (file_ops, llm_router)
    └── models/             # Pydantic схемы запросов/ответов
```
