diff --git a/docs/CLAUDE.md b/docs/CLAUDE.md new file mode 100644 index 0000000..3f50b0a --- /dev/null +++ b/docs/CLAUDE.md @@ -0,0 +1,20 @@ +# Telegram TUI + +## Prompt + +Проект - TUI интерфейс для телеграмма + +Порядок чтения: +1) DEVELOPMENT.md - правило работы (обязательно) +2) CONTEXT.md - текущий статус +3) ROADMAP.md - план и задачи +4) REQUIREMENTS.md / ARCHITECTURE.md - по необходимости +5) E2E_TESTS.md - перед написанием тестов + +После работы обнови CONTEXT.md файл + +После прочтения скажи "Жду инструкций" + +## Архитектура +пока нет, никак не ограничиваю + diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md new file mode 100644 index 0000000..8380470 --- /dev/null +++ b/docs/DEVELOPMENT.md @@ -0,0 +1,102 @@ +# Правила локальной разработки + +> **Обязательно к прочтению перед началом работы!** + +--- + +## Инструменты + +### MCP серверы +- **Serena** — для работы с кодом (символьная навигация, редактирование) +- **Context7** — для получения актуальной документации по библиотекам + +Используй эти инструменты для эффективной работы с кодовой базой. + +--- + +## Правила работы + +### 1. Никогда не запускай сервисы самостоятельно + +**ЗАПРЕЩЕНО** запускать `cargo run`, `cargo build` и подобные команды. + +**Вместо этого попроси пользователя запустить:** + +``` +Запусти, пожалуйста: +cargo run +``` + +### 2. Тестирование — только ручное + +После завершения задачи: +1. Опиши сценарии для проверки +2. Попроси пользователя проверить вручную +3. Дождись фидбека + +**Формат:** +``` +Готово! Проверь, пожалуйста: + +1. Открой cargo run +2. понавигируйся в списке чатов кнопками h j k l +3. Нажми Enter для открытия чата +4. Убедись, что чат прогурзился + +Напиши, если что-то не работает. +``` + +### 3. Работа поэтапно + +Делай работу **небольшими итерациями**: + +1. **Один этап = одна логическая единица** + - Один endpoint + - Один компонент + - Одна фича + +2. **После каждого этапа:** + - Сообщи что сделано + - Дай сценарий проверки + - Дождись подтверждения + +3. **Не делай сразу много:** + - ❌ Весь CRUD за раз + - ✅ Сначала GET, проверили, потом POST, проверили... + +--- + +## Чеклист перед началом работы + +- [ ] Прочитал CONTEXT.md +- [ ] Прочитал ROADMAP.md (понял текущую фазу) +- [ ] Понял задачу +- [ ] Готов работать поэтапно +- [ ] Помню: не запускаю сервисы сам, прошу пользователя + +--- + +## Пример правильного workflow + +``` +Пользователь: Сделай endpoint для получения списка идей + +Агент: +1. Читает документацию через Context7 (NestJS, TypeORM) +2. Использует Serena для навигации по коду +3. Создаёт endpoint GET /api/ideas +4. Сообщает: + + "Создал endpoint GET /api/ideas. + + Запусти backend: + cd backend && npm run dev + + Проверь: + curl http://localhost:4001/api/ideas + + Должен вернуться пустой массив: { data: [], meta: {...} }" + +5. Ждёт фидбек +6. Переходит к следующему этапу +``` \ No newline at end of file diff --git a/docs/REQUIREMENTS.md b/docs/REQUIREMENTS.md new file mode 100644 index 0000000..96a0c35 --- /dev/null +++ b/docs/REQUIREMENTS.md @@ -0,0 +1,78 @@ +# TTUI - Требование к приложению + +## Описание приложения + +Терминальный интерфейс для telegram + +## Функциональные требования + +### Интерфейс + +┌─ TTUI ───────────────────────────────────────────────────────────────────────┐ +│ 1:All │ 2:Personal │ 3:Work │ 4:Bots │ +├──────────────────────┬───────────────────────────────────────────────────────┤ +│ 🔍 Search... │ 👤 Mom (online) │ +├──────────────────────┼───────────────────────────────────────────────────────┤ +│ 📌 Saved Messages │ Today, Dec 21│ +│ ▌ Mom (2)│ │ +│ Boss │ Mom ────────────────────────────────────────── 14:20 │ +│ Rust Community │ Привет! Ты покормил кота? │ +│ Durov │ │ +│ News Channel │ You ─────────────────────────────────────── 14:22 ✓✓ │ +│ Spam Bot │ Да, конечно. Купил ему корм. │ +│ Wife │ Скоро буду дома. │ +│ Team Lead │ │ +│ DevOps Chat (9)│ Mom ────────────────────────────────────────── 14:23 │ +│ Server Alerts │ Отлично, захвати хлеба. │ +│ Gym Bro │ │ +│ Design Team │ You ─────────────────────────────────────── 14:25 ✓ │ +│ Project X │ Ок. │ +│ HR │ │ +│ Mom's Friend │ │ +│ Taxi Bot │ │ +│ │ │ +│ │ │ +│ │ │ +│ │ │ +│ │ │ +├──────────────────────┼───────────────────────────────────────────────────────┤ +│ [User: Online] │ > **message** │ +└──────────────────────┴───────────────────────────────────────────────────────┘ + **commands** + + +### Список желаемого +1) футер - список папок в телеграме +2) список с чатами - лички и группы, сверху инпут для поиска чата +3) основной контент - открытый чат с сообщениями из чата, если никакой чат не открыт, то контент пустой, ничего не показываем. Снизу - инпут для ввода сообщения в чат, который открыт +4) снизу списка чата статус онлайн или нет сам пользователь приложения +5) при открытии чата должна загружаться история чата, а так же подгружаться новые сообщения от собеседника. +6) выделяем сообщения собеседника его никнеймом, группируем его сообщения и разделяем наши сообщения и сообщения собеседника, как на интерфейсе сверху +7) отображаем наше сообщение символом `✓`, если телеграм подтвердил, что сообщение отправлено, и выделяем `✓✓` если собеседник прочитал его +8) при навигации в чате выделяем строку курсивом, при выборе чата (то есть его открытии) ставим в начало символ ▌ +9) `(2)` — счетчик непрочитанных (можно красить в красный/зеленый). +10) `muted` — статус чата (серый цвет). +11) `@` — пинг/меншн. +12) с видео/картинками/голосовые пока ничего не делаем, ренденим заглушку (с упоминанием что это картинка или видео и тд) + +### Управление +1) ctrl+c или command+c - выход из программы +2) "h j k l" - влево, вниз, вверх, вправо (навигация в левом столбце) vim-style управление +3) стрелки - управление, так же как и "h j k l" +4) "command + 1", "command + 2" и так далее - переключение между папками, которые созданы в телеграме +5) из интерфейса "**message**" - это инпут для ввода сообщения в открытый чат +6) ctrl + s - фокус в инпут поиска чата +7) `**commands**` - сюда вставь описания команд, которые есть в приложении + +## Технологии +Пишем на rust-е + +1) ratatui - для tui интерфейса +2) rust-tdlib - для подключения апи телеграма + +## Нефункциональные требования + +### Производительность +1) программа должна выдавать 60 фпс +2) интерфейс не должен мерцать +3) минимальное разрешение - 600 символов, максимального нет, не ограничиваем