docs: add android checklist and prioritized roadmap
Some checks are pending
CI / test (push) Has started running
Some checks are pending
CI / test (push) Has started running
This commit is contained in:
121
docs/android-checklist.md
Normal file
121
docs/android-checklist.md
Normal file
@@ -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 инцидентов
|
||||
110
docs/android-roadmap.md
Normal file
110
docs/android-roadmap.md
Normal file
@@ -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.
|
||||
Reference in New Issue
Block a user