Федор Во fedorvo
Рейтинг
20
№ 148 942 в каталоге
Отзывы
0
Профессионализм
-/10
Коммуникация
- /10
Опыт работы
15 лет
На сайте с
2026 года
Юридический статус
Самозанятый

uListen — приложение умных музыкальных рекомендаций для меломанов: импорт вкуса, генерация плейлистов и экспорт в Apple Music, YouTube Music и Spotify

Используемые навыки Android API Python Разработка iOS

Описание

Клиенту нужен был полноценный продукт музыкальных рекомендаций, а не лендинг и не «ещё один плеер». Стриминги (Spotify, Apple Music, YouTube Music) хорошо крутят уже знакомое и чарты, но плохо работают для людей с жёстким вкусом: рок, электроника, инди, сцена СНГ, конкретная эпоха. В Discover Weekly и аналогах слишком много попсы, ремиксов и повторов.

Задача: сделать сервис, который — берёт реальный вкус из плейлистов пользователя, а не из трендов; — собирает новые плейлисты «похоже, но не то же самое»; — умеет собрать музыку под ситуацию (вечеринка, гости, работа, эпоха), даже если вкуса хозяина ещё нет в системе; — отдаёт результат обратно в стриминг, которым человек уже пользуется.

Цель продукта: выйти в App Store и Google Play с рабочим циклом «подключил аккаунт → импорт → профиль вкуса → генерация → экспорт», плюс веб для онбординга и отдельных сценариев. Не стримить музыку самим, а стать слоем discovery поверх существующих сервисов.

Ограничения, с которыми пришлось жить сразу: Spotify долго не выдавал новые приложения, поэтому нельзя было строить всё только на одном API. Нужны были Apple Music (MusicKit), YouTube Music, обходные интеграции, очередь на Spotify/Yandex/Deezer. Генерация должна была быть персональной и предсказуемой, а не «первый хит из поиска». Продукт — bilingual (EN/RU), с подпиской на мобильных (free: 1 генерация в сутки, Premium — без лимита).

Роль: полный цикл — продукт, бэкенд, веб, мобильное приложение, интеграции со стримингами, админка, аналитика, выкладка в сторы и сопровождение продакшена.

Решение

Спроектировал и собрал стек под продакшен, а не под демо:

Бэкенд: Python / FastAPI, PostgreSQL, SQLAlchemy, Alembic, Redis. Генерация плейлистов — асинхронно (202 + фон + polling), с таймаутами на внешние API и аудитом каждого запуска. Профиль вкуса строится по импортированным трекам и тегам Last.fm: предпочтения, блэклист жанров, антиповтор между генерациями.

Алгоритмы, а не один «AI-промпт». Несколько режимов: — Magic — похожие треки по сидам, баланс по артистам, overlap тегов, без детского попа и случайного чарта; — Black Magic — похожее через Yandex с нормализацией поиска и фолбэками; — AI — раскладка по жанрам профиля; — Prompt Playlist (веб) — плейлист под контекст: событие, кто слушает, настроение, возраст гостей, регион / эпоха / жанр. Живая лента артистов (оставить / усилить / исключить). Жёсткий AND-фильтр: 80s party не должен подмешивать Gaga и Guetta, «гости 50+» — не современный русский рэп, а эпоху их 16–25.

Интеграции: OAuth и импорт/экспорт Apple Music, YouTube Music (через MusicAPI), задел под Spotify. Для YouTube — не первый хит поиска, а отсев ремиксов, трейлеров и чужих артистов, ретраи, чанки при 503. Для Apple — пагинация больших библиотек, публичные share-ссылки, Open Playlist на устройстве.

Клиенты: веб на Next.js / TypeScript; мобильное приложение (Expo / React Native) для iOS и Android. Онбординг: вход, язык по системе, подключение стриминга, one-tap импорт Favorite Songs, генерация, paywall. Подписки — RevenueCat (App Store / Google Play), квота на бэкенде.

Админка и рост: воронка онбординга и активации (Firebase / GA4), пользователи, импорты, MusicKit, опросы, кастомные пуши, аудит генераций. Privacy / Terms под требования YouTube API и сторов. Продакшен: Docker, миграции, EAS-сборки, TestFlight / Play, поддержка после выкладки.

Отдельно доводил качество рекомендаций итерациями: жанр не должен ломаться регионом, эпоха не должна смешиваться с текущими чартами, CIS ≠ «просто русский», calm не тащит рэп и клуб.

Результат

На выходе — живой продукт, а не прототип в Figma.

Пользователь за минуты проходит путь: регистрация → стриминг → импорт библиотеки → вкус → плейлист → открыть его в Apple Music или YouTube Music. Сервис не заменяет плеер: человек слушает там, где уже слушает, но получает подборку под свой вкус и под ситуацию (гости, работа, вечеринка, эпоха).

В сторах — uListen. Smart Music Discovery (iOS и Android), веб — ulisten.space. В проде — сотни пользователей, рабочий импорт (в том числе библиотеки на 100+ плейлистов), фоновая генерация, экспорт без «случайного клипа с YouTube». Free-пользователь получает 1 сборку в день, Premium — без лимита; монетизация через нативные подписки, без обхода правил Apple.

Для бизнеса появилась управляемость: админка видит, где отваливается онбординг (регистрация, импорт, генерация, экспорт), можно пушить обновление, сбрасывать тестовый аккаунт, разбирать, почему конкретный плейлист получился таким. Для продукта — несколько режимов discovery и Prompt Playlist как сценарий «включи что-то уместное прямо сейчас», без обязательного импорта.

Практически это используют так: открыл приложение, когда надоело своё / нужно что-то для компании, получил 10–20 треков «в кассу», отправил в уже установленный стриминг и слушает. Дальше продукт развивается уже на реальных сессиях, а не на гипотезе.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT Сайт-портфолио для архитектора: витрина проектов и чертежей на 4 языках
Сайт-портфолио для архитектора: витрина проектов и чертежей на 4 языках
7
Веб-разработка и IT Социальная сеть «Прихожане»: каталог храмов, карта прихожан и миграция сообщества с SocialEngine
Социальная сеть «Прихожане»: каталог храмов, карта прихожан и миграция сообщества с SocialEngine
6