GET THINGS DONE

Здесь я, Влад, основатель приложения Вертушки, делюсь всем прогрессом. Тут также можно увидеть что планирую реализовать в ближайшее время. Специально сделал публичным этот борд, чтобы каждый мог заскочить и посмотреть! Спасибо, что пользуйтесь :)

0 clones · 0 likes · 0 followers

Backlog

  • Супермаркет
    В разделе Маркета есть иконка тележки, при нажатии на которую открывается супермаркет с самыми редкими и цепляющими пластинками со сторов
  • Улучшить experience сканирования пластинок
    Сценарий: юзер стоит на ярмарке или в магазине перед ящиком из 300 пластинок. Вопросы в голове на каждую интересную: она в вишлисте? 1500₽ — это дорого или дёшево? редкая? Сейчас он открывает Discogs, ищет руками, ждёт, теряет 2 минуты на пластинку. Флоу: Кнопка «Диггер» (в Поиске или на табе) → полноэкранная камера, ничего лишнего Навёл на обложку (или штрихкод) → твой существующий скан-стек (barcode + Vision + CLIP) → вердикт одним экраном, крупно:🟢 «В ВИШЛИСТЕ!» + медианная цена: «просят обычно 3200₽» → если ценник 1500₽ — хватай 🔵 «УЖЕ ЕСТЬ» — не бери дубль (или бери, если пресс другой — показать какой у тебя) 🟣 «Лимитка» / 💚 «Коллекционка» — рарити-теги уже считаются ⚪ ничего особенного — цена + кнопка «в вишлист» Свайп вниз → следующий скан. Скорость — главное: цель < 5 сек на пластинку
  • Умные оповещения про динамику цен и апдейтов по вишлисту + Маркет
    «Упало в цене» — парсеры уже ходят каждые 6ч; храним историю цен листинга (новая таблица listing_price_history или дельта в store_listing) → карточки «−28% · было 4200₽ → 2990₽ · Vinyl.ru». Критерий попадания: drop ≥ 15% за 7 дней «Редкость в наличии» — пересечение store_listing × рарити-флаги: коллекционка/лимитка появилась в наличии в РФ. Это редкое событие само по себе — можно и push тем, у кого в вишлисте «Ниже мировой» — листинги, где цена RUB < медианы Discogs (пересчитанной твоей формулой pricing.py). «В РФ дешевле, чем заказывать: 2400₽ против ~3800₽ с доставкой». Убойный аргумент — ты единственный, кто может это посчитать «Последний экземпляр» — quantity=1 или пропал-появился (уже есть Hot Stock pill — обобщить) Сценарий юзера: утренний заход → скролл дилов как ленты → тап → карточка записи с оффером → клик в магазин (= PurchaseClick, M7 affiliate). Дилы дня — это по сути affiliate-инвентарь, который сам себя собирает. Технически ядро — история цен. Как только она есть, все 4 блока — SQL-запросы. Заодно она же питает «динамику цен» в C1-радаре — делать одной подсистемой.
  • Сделать логотип загрузки
    #дизайн
  • Vinyl Wrapped
    Годовая (+ опц. месячная) share-карточка: сколько добавил за год, топ-жанры/десятилетия, самая редкая находка года, прирост стоимости коллекции в RUB, доля лимиток/коллекционок, страны прессов. Почему: Spotify Wrapped доказал — главный органический канал привлечения. Прямой контент под TikTok-стратегию из M10. База: og_image-генерация и share-карточки ачивок уже есть; collection_value_snapshot даёт динамику стоимости. Реализация: backend-агрегатор по коллекции за период → набор story-карточек (5–7 экранов) → share PNG. Запуск в декабре, пуш «твой год готов». Метрика: доля юзеров, зашеривших ≥1 карточку.
  • Сделать кнопку «мне повезёт»
    В Поиске добавить кнопку, которая показывает рандомную пластинку (но зачееем, тут надо додумать)
  • Афиша винил-ивентов
    Не строим клубы сами — становимся афишей. Discover-лист ивентов: прослушивание нового альбома в Коробке Винила, распродажа в AI Sheff, ярмарки (вкл. бывший E2 — календарь ярмарок МСК/СПб/регионы), DJ-сеты. RSVP «пойду» + видно кто из подписок идёт Магазины постят сами (им трафик) → партнёрская валюта для M7-переговоров: «мы приводим людей на ваши ивенты» Внутри ярмарочного ивента — вход в Диггер (C2) v1: ивенты добавляются вручную (admin), магазины — через нас; v2: кабинет магазина
  • Витрина недели
    Публичная «коллекция недели». Участвуют все с публичным профилем — отдельная галка не нужна. Автоматический шорт-лист (сигналы): Полнота карточек: фото, condition, заметки — «ухоженность» Разнообразие: страны прессов, десятилетия, жанры (глубина > количество) Рарити-плотность: доля collectible/limited (НЕ стоимость — иначе pay-to-win витрина) Свежая активность за неделю Финал: ручной выбор из шорт-листа 5–10 с редакционной подписью («Коллекция недели: 60 лет японских прессов»). Ротация: один юзер не чаще раза в N месяцев. Формат: карточка в поиске/ленте + пост в Telegram-канал. Позже — тематические недели 
  • Сообщения: фишки
    Общие пластинки как ice-breaker. Под шапкой чата (или в empty state «Это начало вашей беседы») — строка «У вас 14 общих пластинок · 3 совпадения по вишлистам» с горизонтальной лентой обложек. Данные уже есть в коллекциях, это просто пересечение. Убивает проблему «о чём написать». Бейдж «у вас в вишлисте» на карточке пластинки. Когда собеседник шарит релиз, который у тебя в вишлисте — карточка подсвечивается: «⭐ Она у вас в вишлисте». И обратный вариант: «💿 У вас уже есть». Мгновенный контекст без перехода в карточку. Быстрые ответы на карточку пластинки. Под чужой карточкой — два чипа: «🔥 Хочу» (добавляет в вишлист + реакция) и «💿 Есть такая». Одним тапом и отреагировал, и обновил коллекцию. Крутящаяся обложка. Обложка в карточке пластинки медленно вращается как винил на вертушке (или начинает вращаться при появлении в ленте). Дешёвый reanimated-loop, а бренд-момент сильный — это буквально имя приложения. Виниловый набор реакций. Заменить/дополнить дефолтный QUICK_REACTIONS тематикой: 💿 🎵 🔥 🤝 («махнёмся»), 💸 («продай»). Реакция «💸» на карточку пластинки — естественный вход в маркет-сценарий. Структурное предложение обмена/продажи. У вас уже есть маркет — сообщение-оффер: карточка «Предлагаю обмен: моя X на твою Y» или «Продам за N ₽» с кнопками принять/отклонить/встречное. Это то, ради чего коллекционеры реально пишут друг другу, и сейчас они делают это плейн-текстом. Подарок через чат. Флоу подарков (app/gift/) уже существует — сообщение-подарок с анимацией разворачивания (конверт → обложка) вместо перехода в отдельный экран. «Сейчас на вертушке». Лёгкий статус: юзер отмечает, что слушает сейчас — это видно в шапке чата под именем вместо «был(а) N мин назад», и по тапу открывается релиз. Даёт живой повод для сообщения и очень в духе приложения.
  • Крутани
    Кнопка «Крутани» в Поиске. Тап → горизонтальная лента обложек летит слева направо, замедляется, останавливается на рандомной редкости — визуал jukebox / слот-машины. Выборка: рандом из дампа с фильтром рарити (collectible/limited, или have < N + want/have высокий) — флаги уже считаются Результат: карточка → «в вишлист» / «крутануть ещё» / share («смотри что выпало») Залипательная механика + спрятанная фича = делает раздел Поиска живым Backend: один endpoint random-выборки по существующим флагам. Основная работа — анимация ленты (Reanimated; физика замедления как в AutoRail) v2: тематические барабаны («только 60-е», «только Мелодия»), home-screen виджет «редкость дня» с той же логикой
  • Рекомендации исходя из коллекции пользователя
  • Подумать как докрутить Радар
  • Сделать интеграцию с вишлистами WishApp
    tg @grulex
  • Винил цветной (апгрейд)
    Добавить нестандартного вида винил фосфорный с песком с водой внутри marble и тд У нас есть какого-то плана макеты, но их нужно дорабатывать
  • Подключить P2P между юзерами
  • AppStore: Innapp events
    In-App Events Событие в App Store — отдельная карточка, которая индексируется поиском (дополнительная площадь под ключи), показывается на продуктовой странице, в выдаче и может попасть в редакционные подборки. Плюс это один из типов, которые можно номинировать на фичеринг Док APPSTORE_ASO_KIT.md
  • Просерчить тему с B2B маркетплейсами
    Оень прикольный инсайт: есть сервисы в РФ, которые подключапют оплату так, чтобы определнный процент шел сразу мастеру с покупки (и компания не платит налог и не парится на эту тему) Надо поискать такие сервисы, подключить его, чтобы работало вот так: Для этого потом будет работать в след виде: внутри приложения чел покупает пластинку в маркетплейсе у меня и деньги прилетают сразу в маркетплейс и часть процента с покупки мне на счет
  • Сделать анимации с маскотом
  • Волны шеринга
    Время от времени включать рубильник на шеринг в приложение по реф ссылке, чтобы кто пригласит больше юзеров, будет бороться за топ места среди которых есть исключительные виды ачивок и главный приз - пластинка
  • Добавить коллабу с Scratch DJ School
    Когда у нас аватарки будут в виде пластинок, каждый кто захочет её тапом поскретичить, получит всплывающий баннер внизу на пробный урок по диджеингу с контактами
  • Коллаборации giveaway с тг-сообществами
  • Придумать фан факты во время загрузки
    Сейсас очень долго прогружается старничка артиста, если много релизов, может как-то этот процесс разбавить?
  • Отредачить аватарку (пластинка)
    Протестить вариант, чтобы фотография грузилась в шаблон пластинки, которая как раз крутится. Ну и давать возможность сркетчить аватарку емае!

To Do

  • Улучшить сканирование обложек
    Сейчас стоит low quality, можно поставить auto, но стоимость вырастет в несколько раз за запрос Отличный пример! Это Tame Impala — InnerSpeaker (сверху) и Mac Miller — Faces (снизу). Обе — культовые, визуально узнаваемые обложки без текста. С detail: "low" модель получает крошечную картинку 512x512 — на ней artwork превращается в кашу. Без повышения detail даже идеальный промпт не поможет — модель просто не видит деталей. Компромиссный вариант — поменять только detail на "auto", без смены модели. Это увеличит стоимость с ~$0.001 до ~$0.01 за запрос (при $5 хватит на ~500 сканирований), но распознавание визуальных обложек станет кардинально лучше. Промпт тут вторичен — главный bottleneck именно качество картинки. Хочешь попробовать только detail: "auto"? А есть ли что-то между ними? Типа detail чутка улучшить Нет, у OpenAI только три варианта: low, high и auto. Промежуточных нет. low — всегда 512x512, 85 токенов high — полное разрешение (до 2048px), ~1100+ токенов auto — модель сама выбирает между low и high По факту auto для обложек с artwork почти всегда выберет high. Но это всё равно ~$0.01 за скан — при $5 хватит на 500 штук, это много.
  • Прокидывать в письмо ссылку на инфо о пластинке + ссылки на магазины (если они есть)
    🖼
  • Alert Check Wishlist
    Добавить внутри пластинки из вишлиста алерт, чтобы приходила инфа по стоимости и где в наличии она, чтобы юзер был в курсе. Типа колокольчик, чтобы не потерять стоимость и динамику Для остальных делать сводку раз в день что из актуального в продаже
  • Изучить подключение без сайта через дискогс (дискомаркет пример)
  • Пофиксить прогрузку витрин в Поиске при открытии приложения
  • Добавить поиск в Коллекцию (сценарий: когда 3000 пластинок)
  • Добавить фильтры в коллекцию: жанры
  • Сделать фильтр в вишлисте (в наличии, есть аналог)
  • Сделать фильтр в Вишлисте (в продаже, есть аналог) + поиск

In Progress

  • Создание схемы выгрузки всех обложек релизов, чтобы загружались моментально
  • Уведомления подписчиков: прыгать во все релизы, подтягивать иконки ачивок
  • Пилим первый драфт по Андроиду
  • Продолжить план по дотюниванию подключения магазинов MARKET_STORES_SCALING.md

Done

  • Добавить папки как сущность в вишлист
  • Google & Apple Sign in
    Окей, по каждой штуке пошагово. 1) Google Client IDs Где взять: Google Cloud Console → выбрать/создать проект → APIs & Services → Credentials → + CREATE CREDENTIALS → OAuth client ID. Тебе нужно создать 3 OAuth Client ID (для одного и того же проекта): ТипЧто заполнятьКуда пойдётWeb applicationname = "Vertushka Web", всё остальное пустоеgoogleWebClientId + Backend GOOGLE_CLIENT_IDiOSbundle ID = com.vertushka.app (из app.json)googleIosClientId + reversed → iosUrlSchemeAndroidpackage = com.vertushka.app, SHA-1 fingerprint (см. ниже)ничего вписывать не надо — работает по package+SHA-1 Где взять SHA-1 для Android: cd "/Users/vladislavrumancev/Desktop/Cursor/Вертушка/Mobile" && eas credentials -p android Выбираешь production профиль → покажет SHA-1 fingerprint. Копируешь в Google Cloud Console. Перед созданием клиентов: Google требует настроить OAuth consent screen (тип External, заполнить app name = "Вертушка", support email, privacy policy URL = https://vinyl-vertushka.ru/privacy). Куда вписывать Mobile/app.json — три места: "plugins": [ ... [ "@react-native-google-signin/google-signin", { "iosUrlScheme": "com.googleusercontent.apps.123456789-abcdef..." // ← reversed iOS Client ID. Если iOS Client ID = // 123456789-abcdef.apps.googleusercontent.com, // то reversed = com.googleusercontent.apps.123456789-abcdef } ], ... ], "extra": { ... "googleWebClientId": "123456789-xxxxxxx.apps.googleusercontent.com", "googleIosClientId": "123456789-yyyyyyy.apps.googleusercontent.com", ... } Backend .env на проде: ssh deploy@85.198.85.12 'nano ~/vertushka/Backend/.env' Добавить/обновить: GOOGLE_CLIENT_ID=123456789-xxxxxxx.apps.googleusercontent.com Важно: значение должно совпадать с googleWebClientId (Web Client ID — он же audience в id_token, бэк его проверяет). После правки .env — рестартни бэк: ssh deploy@85.198.85.12 'cd ~/vertushka && docker compose -f Backend/docker-compose.prod.yml restart backend' 2) Amplitude API Key Где взять: amplitude.com → создать аккаунт → Settings (шестерёнка слева внизу) → Projects → + Create Project → name = "Вертушка" → откроется проект → General → скопировать API Key (32-символьная строка). Куда вписать: Mobile/app.json → extra.amplitudeApiKey: "extra": { ... "amplitudeApiKey": "abc123def456...", ... } Для бэкенда Amplitude не нужен — события трекает только Mobile. 3) После всех правок — пересобрать Mobile Google native sign-in и Amplitude — это нативные модули, Expo Go их не поддерживает. Нужен EAS Build: cd "/Users/vladislavrumancev/Desktop/Cursor/Вертушка/Mobile" eas build --profile preview --platform all Потом установить .ipa/.apk на устройство и проверить: Логин через Apple на iOS Логин через Google на iOS и Android В Amplitude дашборде → User Look-Up → должны прилетать события login, register, scan_barcode и т.д.
  • Сделать экран для юзера через @
  • Найти базу русских пластинок и загрузить на сервер
    К примеру, что не могу найти: Бульвар Депо Неееет, ты что
  • Сделать Notification Engine
  • Перенести на EAS для дистанционки
  • Перепроверить коэффицент умножения стоимости пластинок на корректность
  • Добавить анимацию с маскотом в загрузку
    #дизайн
  • Добавить аватарки в уведомления для профиля
    🖼
  • Подключить Амплитуду
  • Подключить Tesflight
  • Настроить ранжирование витрины Маркета в публичном профиле как в Поиске
    Чтобы пластинки менялись исходя из того, что сейчас в наличии
  • Сканирование обложек по визуалу
    Подключил API Open AI, чтобы вытаскивать имиджи. Пока стоит на low на некоторых вариантах проблемно пока работает, где нет текста
  • Увеличить скорость загрузки артистов
  • Сделать нормальную шапку в Ачивках
  • Обновить сниппет в пулбичном профиле
  • Выделять цветные пластинки
    Диалог в Claude Code Display vinyl record colors from Discogs API Ограничения: Покрытие неполное — только если кто-то руками заполнил в Discogs (у редких/коллекционных изданий лучше, у обычного чёрного — ничего) Нет стандартного enum — цвета это вольный текст, поэтому нужно будет парсить/нормализовать Как можно реализовать: Извлечь formats[0].text в ответ релиза как поле vinyl_color_text Написать простой парсер/словарь: из descriptions и text вытащить нормализованный цвет ("red", "blue", "clear" и т.д.)
  • Пофиксить восстановление удаленного акка
  • Добавить фильтр внутри версий мастер релиза
    Такой же как и в поиске 🖼
  • Добавить интеграцию с Dr. Head
  • Феномен Joji: почему обложка пластинки теряется и подставляется другая, не красная
  • Обновить обложки по скану : отображаются только первые обложки
  • Добавить иконку флажка на report личных записей + проверить удаление
    🖼
  • Пофиксить свайп страниц, чтобы не только с краю но и с центра двигалась
  • Выпустить приложение в AppStore
  • Добавить кнопку «импорт из дискогс» как для коллекции, так и для вишлиста раздела
  • Мелкие фиксы
  • Подключить аналитику
    1. Прописать DNS В панели регистратора домена vinyl-vertushka.ru добавить A-запись: metabase.vinyl-vertushka.ru → 85.198.85.12 Подождать 5–15 минут пока пропагируется (можно проверить: dig metabase.vinyl-vertushka.ru — должен вернуть твой IP). 2. Закоммитить и задеплоить cd /Users/vladislavrumancev/Desktop/Cursor/Вертушка git add Backend/ git commit -m "feat(analytics): nginx-конфиг для metabase.vinyl-vertushka.ru" git push ssh deploy@85.198.85.12 'cd ~/vertushka && bash Вертушка/Backend/scripts/deploy.sh' После деплоя поднимется Metabase, но nginx упадёт при reload — потому что он попытается прочитать SSL-сертификат, которого ещё нет. Это нормально, чиним в шаге 3. 3. Получить SSL-сертификат через certbot На сервере: ssh deploy@85.198.85.12 cd ~/vertushka/Вертушка/Backend docker compose -f docker-compose.prod.yml run --rm certbot \ certonly --webroot -w /var/www/certbot \ -d metabase.vinyl-vertushka.ru \ --email vladrum0310@gmail.com --agree-tos --no-eff-email Потом перезапустить nginx, чтобы он подхватил сертификат: docker compose -f docker-compose.prod.yml restart nginx 4. Прописать SITE_URL для Metabase На сервере в ~/vertushka/Вертушка/Backend/.env.prod добавить строку: METABASE_SITE_URL=https://metabase.vinyl-vertushka.ru И перезапустить Metabase, чтобы он подхватил: docker compose -f docker-compose.prod.yml up -d metabase Без этого Metabase будет генерировать ссылки в письмах с localhost:3000 — для UI работы это не критично. 5. Создать read-only пользователя БД (если ещё не сделал) METABASE_RO_PASSWORD='придумай-длинный-пароль' bash ~/vertushka/Вертушка/Backend/scripts/setup_metabase_role.sh 6. Открыть Metabase в браузере https://metabase.vinyl-vertushka.ru При первом входе: Создаёшь админ-аккаунт (свой email + пароль) Add database → PostgreSQL:Host: db Port: 5432 Database name: vertushka Username: metabase_ro Password: тот, что задал в шаге 5 Готово — Metabase сам отсканирует все таблицы и view'хи (v_user_overview, v_gift_funnel и т.д.).
  • Прокачать личный профиль
  • Оставить плашку «забронировано» у юзера кому даришь
    🖼Сейчас эта плашка не прорастает у юзера, надо сделать
  • Пофиксить ошибку входа через Apple и Discogs
  • Добавить механизмы для отправки жалоб на UGC контент (правила Эппл)
    UGC_MODERATION_M2.md
  • Перепроверить дабл чек добавления пластинки дубля в коллекцию
    Сейчас через штрихкод добавляется пластинка такая же что и в коллекции, хотя она там уже есть и должен быть поп-ап с дабл чеком
  • Сделать ачивки
  • В маркет: если пластинка с ценой, показывать по кнопке опции с ценами
    Сейчас если у нас кнопка "в маркет" имеет функцию перехода в магазин, было бы круто показывать опции на цены в магазинах, если они есть
  • Добавить приложение в App Store ЕС
  • Унифицировать дизайн
  • Экспортить свои данные из аккаунта
  • Протестить на импорт загрузки Discogs большую коллекцию
  • Дизайн маскота
  • Шеринг своей коллекции со стоимостью
  • Дотюнить онбординг
    Сейчас иконки в разной стилистике Нет нативного онбординга по интерфейсу, только общие сведения что делать
  • Отражать цены на тех пластинках где их нет
    Порой встречаются релизы, к которым не подтягивается цена, хорошо бы это решить Есть еще такие релизы как Антоха МС - Родня, они кастомные и только внутри Коробки Винила, цена у них есть исходя из инфы магазина, здесь её бы подтянуть
  • Добить раздел регистрации
  • Сделать фильтры по жанрам и не только в Маркете
    Сейчас есть общий поиск, но было бы круто по жанрам и другим способам фильтровать музыку из всех маркетплейсов
  • Сделать и прочекать публичную страницу как она работает
  • Дотюнить раздел с коллекциями
  • Добавить сущность «папка» в Коллекции
  • Придумать логотип
    #дизайн 🖼
  • Сделать красивый блок по архетипам в рамках профиля ачивок
  • Добавить тг алерт и чекнуть glitchtip
  • Перенести из локалки на сервер
  • Сделать Радар вишлиста
    Самая недооценённая позиция старого Backlog. Retention-машина + affiliate-мостик. Два слоя: Активный — кнопка «Радар» в вишлисте. Экран по каждой позиции: спарклайн динамики цены, текущие офферы РФ-магазинов (цена, магазин, наличие), медиана Discogs через pricing.py, события «появилось/пропало/подешевело». Пассивный — пуши. «Пластинка из вишлиста появилась в Коробке Винила за 2400₽», «подешевела на 20%». Инфраструктура: парсеры с stock-refresh 6ч + notifications v2 (dedup, quiet hours) — всё готово. Новое в данных: история цен листингов — таблица listing_price_history (listing_id, price_rub, is_available, seen_at), запись при каждом refresh с дельта-фильтром. Эта же таблица питает C3. Никто в РФ этого не делает; Discogs — тем более. Метрика: CTR пуша радара; клики → PurchaseClick (M7).
  • Добавить возможность добавлять пластинку вне Discogs
  • Добавить экран с повторением версии релиза в коллекции
    Если ты добавляешь одинаковый релиз в коллекцию, появляется поп-ап с инфой, что такая версия релиза у тебя добавлена, ты точно хочешь добавить вторую
  • Добавить пуш об оценке приложения
  • Уменьшить количество поп-апов и их дизайн
  • Подготовить обложки приложения в стор
  • Добавить иконку в уведомлениях на level up
    🖼
  • Дабл чекнуть нотификации перед релизом в прод
  • Добить уведомления для Радара и профиля
  • Добавить notification ленту
    Чтобы видеть все адпейты что происходит внутри Вертушки новая подписка бронь твоей пластинки из вишлиста выход новой пластинки и тд
  • Подгрузить данные с других магазинов для поиска внутри приложения
  • Добавить пункт ? для раздела оценки стоимости
    Расписать четко как строится ценообразование, чтобы каждый юзер мог узнать
  • Отправить на ревью в стор приложение
  • Сделать уведомления раздел с подписчиками
  • Подключить Discogs API APP
    Это развяжет нам руки на то, чтобы у каждого юзера были свои токены
  • Пофиксить баг с цветными пластинками в Маркете
    🖼
  • Подчистить меню и убрать лишние разделы
    🖼
  • Коррекция дизайна интерфейса
  • Фиксы в Маркете
  • Добавить донаты для Вертушки на публичные страницы
  • Сделать Discogs Data Dumps
    Сейчас наш matcher для создания новой records (когда юзер кликает на пластинку, или когда парсер магазина приносит новый листинг с barcode которого ещё нет в нашей БД) дёргает Discogs API через _try_discogs_fetch / _try_discogs_fetch_by_text. Это создаёт два бутылочных горлышка: Rate limit Discogs API: 60 req/min на токен. Жёсткий лимит, заплатить за повышение нельзя — Discogs не продаёт premium tier. Latency: ~300-500 мс на запрос. При активном backfill 10к листингов один matcher batch занимает часы. В стационаре после первоначального импорта (когда у нас в магазинах ~100к листингов, и большинство уже сматчены) проблема снижается. Но на каждом новом магазине или при перепарсинге у нас всплеск Discogs-запросов. Решение: Discogs официально публикует полные дампы базы данных на S3. Если их распарсить и держать local mirror таблицы records — matcher работает полностью локально, без сети, без лимитов. На каждое обновление магазина (10к-100к листингов) — мгновенный матчинг через INDEX lookup по barcode. Подробнее есть инфа в MD файле DISCOGS_DATA_DUMPS.md
  • Добавить возможность для ручного релиза добавлять фотки из фотоальбома
  • Маркет: добавить фильтры отдельно в каждый магазин + отображение расширить
    Сейчас когда по флиьтрам прыгаешь, то показывает определенное количество пластинок, дальше не скроллится - пофиксить
  • Создать и добавить почту, которая будет рассылать письма-отбивки при бронировании для публичного профиля
    Чтобы письма реально уходили, добавь в .env.prod на сервере: SMTP_USER=your@yandex.ru SMTP_PASSWORD=<пароль приложения из настроек Яндекс ID> EMAIL_FROM=your@yandex.ru Название темы в Claude App Redesign public profile implementation
  • Добавить предварительную стоимость пластинок
  • Поправить иконки и сделать в единой стилистике
  • Пофиксить косты по русским пластинкам
    Что важно понимать про точность: для Кино реальная цена в магазинах РФ — 2500-3600 ₽ (Maschina Records 2019 reissue). Наша оценка для $15-медианы Discogs даёт 1755 ₽ — это ниже. Причина не в формуле, а в данных: Discogs медиана $15 — это в основном убитые оригиналы 1988 года от международных продавцов, а в РФ магазинах продают новенькие переиздания. Это разные товары под одним мастер-релизом, и формулой это не лечится — нужен фильтр по pressing variant или интеграция с РФ-магазинами.
  • Поправить раздел Notifications
    В первую очередь, чтобы не нажимать на нкопку «Отметить все прочитанным», а сделать паттерн как в Инстаграме: то что юзер видит на экране, оно уже считается прочитанным, это супер комфортно и корректно, а кнопку вообще убрать тогда в таком случае. Если там много нотификаций и они идут ниже его отображаемой зоны экрана, то те уведомления остаются не прочитанными. Также сейчас есть такая тема: у меня приходят одни и те же push и насчет одних и тех же обложек, с периодичностью раза в два дня. Это надо пересмотреть. Смотрите, это немного странно выглядит в том плане, что просто приходят одни и те же отбивки, и они информативные, но они, как будто бы, их слишком много. Поэтому здесь это надо как-то пересмотреть. А также очень важно уведомления группировать со временем, потому что на данный момент это не совсем корректно выглядит. А также то, чего у нас сейчас нет, это то, что при нажатии на какой-то push открывалось именно то, что нам нужно. То есть у нас открывается пластинка. Это круто, когда она снова в продаже и цену мы видим. Если мы их будем группировать, посмотрите на все пластинки, что у вас доступны сейчас по ценам, мы жмем, и наверное нужно показать экран со всеми текущими пластинками, которые находятся в продаже, но может быть, я не прав. Тут нужно подумать. С точки зрения уведомление про ачивки: когда я на них нажимаю, я проваливаюсь просто в раздел с ачивками. Нужно, чтобы открывалась та самая ачивка, которую ты получил. Это тоже важно учесть. И давай еще подумаем про другие сценарии, к которым я мог не учесть.  А также кнопка «удалить» работает странно, не плавно, не красиво и более того при свайпе все равно открываетсчя раздел пластинки, даже если ты его удаляешь. Нужно сделать скругленным свайп удаления, чтобы все было красиво и аккуратно
  • Улучшить поиск
    - Фильтры (формат, год, страна) - Группировка по master release - Нормальный UI (не как у Discogs)
  • Ачивки шеринг: при сохранении шерить процент редкости
  • Бронь подарков: дабл чекнуть что все работает
  • Отправить рассылку всем кто ждёт приложение
    🖼
  • Фиксы по приле Build no1
  • Маркет: подсветить раздел сильнее
  • Запустить ачивку топ 100
    ssh deploy@85.198.85.12 'docker exec vertushka_scheduler python -m app.scripts.grant_founding_hundred' уйдут пуши, в гриде появится полка «Истоки» с маскотом-соткой, у пина будет улика и share-карточка для Stories. Слоты 4–100 дальше заполняются сами — первой пластинкой каждого нового юзера после отсечки.
  • Добавить haptic на сплеш анимацию в начале
  • Подсвечивать пасхалки у других подписчиков
    Сейчас пишет количество, однако не показываются
  • Сделать нативным свайп в ручном релизе
  • Скачать обложки из Internet Archive
    https://archive.org/ Сверился. Ответ: по-настоящему легальная база для массового обогащения ровно одна — Cover Art Archive, и она специально для этого создана. Остальное — API «по требованию» с запретом на массовое хранение. Разбор: Главный источник: Cover Art Archive (CAA)
  • Собрать свой линктри
  • Улучшить поиск
    Сейчас он находится строго по названию артиста, а надо сделать поиск умным, чтобы он понимал и работал по следующему принципу: Если сделана ошибка в слове, то выдается по поиску самая ближайшая версия по смыслу Если по запросу подходит несколько артистов, то выдавать несколько вариантов
  • Вертушка на сервере: фиксы
  • Показывать новинки в приложении при поиске
    Чат с инфой как это работает Redesign public profile implementation
  • Публичная коллекция и вишлист
    Публичный профиль - Уникальная ссылка app.vertushka.ru/@username - Красивая веб-страница с коллекцией - Wishlist с кнопкой "Забронировать"
  • Маркет: если выбрал цветной, то сразу фильтр по форматам винил
  • Навесить метрики на переходы в магазины
  • Почистить поиск и убрать всех из выдачи у кого внутри нет релизов
  • Забронировать подарок (внешняя)
    - Анонимное бронирование (без авторизации) - Email уведомление владельцу "Кто-то забронировал" - Работает по принципу
  • Подтюнить дизайн экрана юзера @
  • Маркет: прорастить фильтры по жанрам глубже
  • Прочекать все шаги по выгрузке в стор
  • Поправить логику ачивки «распахнул»
    работала при активации, сейчас у всех включены профили Как вариант, сделать так, чтобы при первом переходе на публичную ссылку он активировался, подумать
  • Посмотреть на нотификейшн центр, чтобы изучить все текущие триггеры
  • Импорт вишлиста из Discogs
  • Добавить ссылку на публичный профиль на экране «мне дарят»
    🖼
  • Ачивки: сделать просмотр майлстоунов в формате карусели
    Это связано с тем, чтобы не скроллить долго вниз
  • Выделять лимитки в поиске
    Хочется добавить на них какую-то плашку привлечения внимания, чтобы переливался цвет и юзер мог сразу увидеть, что это какой о hidden gem уникальный
  • Пофиксить дизайн в сканировании
    🖼
  • Попап из кнопки «в маркет»
    Если ты прыгаешь из версии релиза и данной плачти

Browse all community boards · Create your own board on Timestripe

Sign up to Timestripe