From 3c855d78a6448b1e59ffc320b837f950dae9fbc1 Mon Sep 17 00:00:00 2001 From: benya Date: Sun, 8 Mar 2026 22:59:33 +0300 Subject: [PATCH] docs: add android checklist and prioritized roadmap --- docs/android-checklist.md | 121 ++++++++++++++++++++++++++++++++++++++ docs/android-roadmap.md | 110 ++++++++++++++++++++++++++++++++++ 2 files changed, 231 insertions(+) create mode 100644 docs/android-checklist.md create mode 100644 docs/android-roadmap.md diff --git a/docs/android-checklist.md b/docs/android-checklist.md new file mode 100644 index 0000000..a619fa2 --- /dev/null +++ b/docs/android-checklist.md @@ -0,0 +1,121 @@ +# Android Checklist (Telegram-подобный клиент) + +## 1. Базовая архитектура +- [ ] Kotlin + Jetpack Compose +- [ ] Модульность: `core`, `data`, `feature-*`, `app` +- [ ] DI (Hilt/Koin) +- [ ] MVI/MVVM + единый state/presenter слой +- [ ] Coroutines + Flow + structured concurrency +- [ ] Логирование (Timber/Logcat policy) +- [ ] Crash reporting (Firebase Crashlytics/Sentry) + +## 2. Сеть и API +- [ ] Retrofit/OkHttp + auth interceptor +- [ ] Авто-refresh JWT +- [ ] Единая обработка ошибок API +- [ ] Realtime WebSocket слой (reconnect/backoff) +- [ ] Маппинг DTO -> Domain -> UI models +- [ ] Версионирование API и feature flags + +## 3. Локальное хранение и sync +- [ ] Room для чатов/сообщений/пользователей +- [ ] DataStore для настроек +- [ ] Кэш медиа (Coil/Exo cache) +- [ ] Offline-first чтение истории +- [ ] Очередь отложенных действий (send/edit/delete) +- [ ] Конфликт-резолв и reconcile после reconnect + +## 4. Авторизация и аккаунт +- [ ] Login/Register flow (email-first) +- [ ] Verify email экран/обработка deep link +- [ ] Reset password flow +- [ ] Sessions list + revoke one/all +- [ ] 2FA TOTP + recovery codes +- [ ] Logout с полным cleanup local state + +## 5. Профиль и приватность +- [ ] Просмотр/редактирование профиля +- [ ] Avatar upload + crop 1:1 +- [ ] Username/name/bio editing +- [ ] Privacy settings (PM/last seen/avatar/group invites) +- [ ] Blocked users management + +## 6. Список чатов +- [ ] Tabs/фильтры (all/private/group/channel/archive) +- [ ] Pinned chats +- [ ] Unread badge + mention badge `@` +- [ ] Muted badge +- [ ] Last message preview по типам медиа +- [ ] Online indicator в private чатах + +## 7. Сообщения +- [ ] Отправка текста +- [ ] Reply/quote +- [ ] Edit (<=7 дней) +- [ ] Delete for me / for all (по правам) +- [ ] Forward в 1+ чатов +- [ ] Reactions +- [ ] Delivery/read states + +## 8. Медиа и вложения +- [ ] Upload image/video/file/audio +- [ ] Галерея в сообщении (multi media) +- [ ] Media viewer (zoom/swipe/download) +- [ ] Единое контекстное меню для медиа +- [ ] Voice playback waveform + speed +- [ ] Audio player UI (не как voice) +- [ ] Circle video playback (view-only при необходимости) + +## 9. Запись голосовых +- [ ] Hold-to-record +- [ ] Slide up to lock +- [ ] Slide left to cancel +- [ ] Минимальная длина записи (>=1s) +- [ ] Единый global audio focus (1 источник звука) + +## 10. Группы/каналы +- [ ] Create group/channel +- [ ] Join/leave +- [ ] Invite link (create/regenerate/join) +- [ ] Roles owner/admin/member +- [ ] Admin actions: add/remove/ban/unban/promote/demote +- [ ] Ограничения канала: писать только owner/admin +- [ ] Member visibility rules (скрытие списков/действий) + +## 11. Поиск +- [ ] Глобальный поиск: users/chats/messages +- [ ] Поиск внутри чата inline (не модалка) +- [ ] Jump to message из результатов + +## 12. Уведомления +- [ ] FCM push setup +- [ ] Локальные уведомления для foreground +- [ ] Notification channels (Android) +- [ ] Deep links: open chat/message +- [ ] Mention override для muted чатов + +## 13. UI/UX и темы +- [ ] Светлая/темная тема (читаемая) +- [ ] Адаптивность phone/tablet +- [ ] Контекстные меню без конфликтов жестов +- [ ] Bottom sheets/dialog behavior consistency +- [ ] Accessibility (TalkBack, dynamic type) + +## 14. Безопасность +- [ ] Secure token storage (EncryptedSharedPrefs/Keystore) +- [ ] Certificate pinning (опционально) +- [ ] Root/emulator policy (опционально) +- [ ] Privacy-safe logging (без токенов/PII) + +## 15. Качество +- [ ] Unit tests (domain/data) +- [ ] UI tests (Compose test) +- [ ] Integration tests для auth/chat/realtime +- [ ] Performance baseline (startup, scroll, media) +- [ ] ANR/crash budget + monitoring + +## 16. Релиз +- [ ] CI/CD (build, test, lint, detekt) +- [ ] Internal QA build channel +- [ ] Beta rollout +- [ ] Release checklist и runbook инцидентов diff --git a/docs/android-roadmap.md b/docs/android-roadmap.md new file mode 100644 index 0000000..5f33fc6 --- /dev/null +++ b/docs/android-roadmap.md @@ -0,0 +1,110 @@ +# Android Roadmap (до production) + +## Принципы +- Backend/API уже есть: Android строим поверх текущего контракта (`/auth`, `/chats`, `/messages`, `/realtime`, `/media`). +- Сначала закрываем core-мессенджер, потом polish. +- Каждая фаза завершается demo + regression check. + +## Phase 0: Foundation (1-2 недели) +**Цель:** запустить каркас приложения и базовую сетевую инфраструктуру. + +### Scope +- Проектная архитектура, DI, навигация. +- Retrofit/OkHttp + auth/refresh. +- Room + DataStore заготовки. +- Базовый theme system и design tokens. +- Экран логина (email-first). + +### DoD +- Можно авторизоваться и получить `me`. +- Сборка/линт/тесты в CI зеленые. + +## Phase 1: Web-Core parity MVP (3-5 недель) +**Цель:** довести Android до текущего рабочего web-core. + +### Scope +- Chat list: unread/mentions/pin/archive/mute badges. +- Chat screen: send/read/reply/edit/delete/forward/reactions. +- Realtime: receive/update/delete/typing/read/delivered/presence. +- Media: image/video/file/audio upload + viewer. +- Voice: record (hold/lock/cancel) + playback + waveform. +- Groups/channels roles/permissions, invite links. + +### DoD +- Основные пользовательские сценарии проходят без перезапуска. +- Нет blocker-багов по auth/chat/realtime/media. + +## Phase 2: Stability & Security (2-3 недели) +**Цель:** сделать релизно-устойчивую версию. + +### Scope +- Offline queue + reconcile после reconnect. +- Session management + 2FA + recovery codes UX. +- Crash reporting + performance baseline. +- Deep link handling (`verify-email`, `join`, `open chat/message`). +- Расширенное тестирование (unit/integration/ui). + +### DoD +- Crash-free rate целевой для internal beta. +- Критичные сценарии покрыты автотестами. + +## Phase 3: Product polish (2-4 недели) +**Цель:** UX-качество уровня “приятно ежедневно использовать”. + +### Scope +- Chat info polish (media tabs, links, jump to message). +- Контекстные меню и жесты без конфликтов. +- Тонкая настройка тем (light/dark readability). +- Улучшение поиска и навигации по результатам. +- Accessibility pass. + +### DoD +- UX-bug backlog снижен до low/medium. +- Продуктовая приемка по ключевым flows. + +## Phase 4: Release (1-2 недели) +**Цель:** выкладка в production. + +### Scope +- FCM push production config. +- Подготовка Play Console, privacy, release notes. +- Staged rollout (5% -> 25% -> 100%). +- Monitoring и incident runbook. + +### DoD +- Успешный staged rollout без критических откатов. + +## Приоритеты (P0/P1/P2) +### P0 (обязательно до релиза) +- Auth + refresh + logout cleanup +- Chat list + chat screen core actions +- Realtime стабильность +- Media upload/view + voice record/playback +- Roles/permissions для group/channel +- Crash reporting + минимальные тесты + +### P1 (сразу после P0) +- Search UX +- Chat info/media tabs +- Advanced formatting/threads polish +- Better offline UX + +### P2 (после релиза) +- Дополнительные эффекты/анимации +- Расширенная аналитика +- Экспериментальные UX-фичи + +## Оценка сроков +- Реалистично до strong beta: **8-12 недель**. +- До стабильного production с полировкой: **10-16 недель**. + +## Риски +- Drift между web и android поведением. +- Realtime race conditions при нестабильной сети. +- Media edge-cases (mime/duration/seek). +- Permission UX (микрофон/уведомления) на разных Android версиях. + +## Следующий практический шаг +1. Заморозить API-контракт (OpenAPI snapshot). +2. Поднять Android skeleton (Phase 0). +3. Зафиксировать Definition of Done для Phase 1 demo.