Files
pipu-music/docs/roadmap.md
T
mrleo1nidandClaude Opus 5.5 9eb1c25147 docs: add product idea, design prototypes and development documentation
- IDEA.md: product vision from the user's perspective (input for design)
- Architecture, ADRs, data model, REST API overview
- Auth and roles, library storage (NFS, path regexes, scanner, search),
  playback, recommendation system ("My Wave"), track upload queue
- Web, Android (offline, self-update), i18n, design system
- Testing strategy, Gitea Actions CI/CD, deployment, conventions, roadmap
- Clickable web/Android design prototypes and wave button variants
- .claude/launch.json to serve the prototypes locally

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 23:21:31 +03:00

4.9 KiB
Raw Blame History

План разработки

Каждый этап заканчивается рабочей версией с тегом и релизом.

M0 — Скелет (v0.1)

  • Монорепо: pnpm + Turborepo, Go-модуль, Python-проект, openapi.yaml с server-info.
  • deploy/compose.dev.yaml, nginx, Postgres, Redis, Meilisearch.
  • ci.yml и release.yml (пока собирают пустые образы и debug-APK «hello»), генерация тестовой музыки.
  • Готово, когда: тег v0.1.0 создаёт релиз в Gitea с образами и APK.

M1 — Доступ (v0.2)

  • Bootstrap-админ, вход, refresh-ротация, смена пароля / учётных данных, сессии.
  • Роли и политика прав, админка «Пользователи», аудит.
  • Веб: каркас (топбар, сайдбар, пустой плеер), экраны входа и setup, i18n ru / en.
  • Готово, когда: E2E-сценарии 1, 2, 8, 9, 10 зелёные.

M2 — Библиотека и поиск (v0.3)

  • storage-agent, источники NFS / local, тест подключения.
  • Шаблоны путей с предпросмотром, сканер (инкрементальный, переименования, дубли), обложки.
  • Meilisearch, suggest и страница поиска, страницы исполнителя и альбома.
  • Готово, когда: реальная библиотека 11k треков сканируется, поиск < 50 мс, сценарии 3, 4.

M3 — Воспроизведение (v0.4)

  • Стриминг через X-Accel, подписанные ссылки, транскодинг и кэш.
  • Плеер в вебе (очередь, Media Session, горячие клавиши, нормализация), сохранение состояния.
  • События, история, лайки / дизлайки, раздел «Коллекция».
  • Готово, когда: сценарии 5, 7; перемотка мгновенная; позиция восстанавливается на другом устройстве.

M4 — Моя волна v1 (v0.5)

  • analyzer (Essentia), признаки и эмбеддинги, прогресс в админке.
  • recommender: кандидаты, эвристическое ранжирование, контексты (занятия / настроения), сессионный вектор, правила разнообразия; fallback в Go.
  • Анимированная кнопка волны и MoodPicker в вебе.
  • Готово, когда: сценарий 6; метрики волны видны в админке.

M5 — Android (v0.6)

  • Вход с адресом сервера, главная с волной, поиск, коллекция, плеер с фоновым воспроизведением.
  • Офлайн: загрузки, «Скачанное», очередь событий.
  • Самообновление через сервер.
  • Готово, когда: Maestro-сценарии зелёные; обновление 0.6.0 → 0.6.1 проходит на реальном устройстве.

M5.5 — Очередь на добавление (v0.7)

  • Отпечатки (SHA-256, Chromaprint) для существующей библиотеки.
  • Запись через storage-agent, accepts_uploads, write_template с автоподбором и проверкой обратимости.
  • tus-загрузка, предпроверка дублей, квота, обработка, экраны «Предложить треки», «Очередь на добавление», «Настройки».
  • Готово, когда: E2E-сценарии 11, 12; импорт реального альбома ложится рядом с существующими по той же структуре.

M6 — Моя волна v2 (v0.8)

  • ALS, центроиды вкусов, LightGBM-ранжировщик, бандит, онбординг, ночное обучение с проверкой метрик.
  • Персонализация suggest.
  • Готово, когда: на накопленных данных v2 лучше v1 по офлайн-NDCG и онлайн early-skip rate.

M7 — Стабилизация (v1.0)

  • Нагрузочный smoke, бэкапы и восстановление (проверено), документация администратора, доступность, полировка анимаций, багфиксы.

Дальше (идеи)

  • Плейлисты, волна по исполнителю / треку, ежедневные подборки, тексты песен, Chromecast / DLNA, Android Auto, iOS (TestFlight), Last.fm-скробблинг, импорт лайков.