Один заголовок на білому тлі. Найменший крок, який уже «працює».
Ось як народжується застосунок — від білого екрана до повноцінного плеєра, шар за шаром. Це історія не про продукт, а про процес.
Це не «AI-powered feature». Це чесна відповідь на питання:
Писав код, генерував мокапи, шукав баги — за специфікацією людини.
Ставив критерії, обирав дизайн, тестував, приймав рішення.
Перше рішення: який плеєр будуємо? Три гілки, одна обрана.
Один заголовок на білому тлі. Найменший крок, який уже «працює».
Почати з мінімуму, що відкривається в браузері — і від нього рости.
Одразу повний дизайн — відхилено: невідомо, що потрібно, поки не побачиш перший екран.
AI згенерував сторінку. Людина затвердила напрям «аудіо-тільки».
HTML-скелет: заголовок, підзаголовок, місце під плеєр. Сторінка реально рендериться.
Спершу «кістяк» — каркас, на який нарощуються всі наступні шари.
Одразу з бекендом — відхилено: спершу побачити форму, потім підключати дані.
AI написав розмітку. Людина визначила, що має бути на екрані.
Кнопки play/pause, таймер. Потягніть повзунок, щоб побачити перехід.
Кнопки play/pause, таймер 0:00, прогрес-бар.
Плеєр — серце. Без нього це просто список файлів.
Сторонній плеєр-бібліотека — відхилено: зайва залежність, менше контролю.
AI реалізував HTML5 <audio>. Людина перевірила на iPad.
Потягніть повзунок: плеєр без списку → з тайликами.
Сітка тайликів: обкладинка, назва, артист. Пошук і вкладки.
Обкладинки — це те, як дитина впізнає пісню. Текст вторинний.
Простий текстовий список — відхилено: дитині потрібні картинки.
AI зібрав сітку. Людина вирішила: обкладинки — головне.
Explicit-мітка з iTunes. Якщо пісня позначена як explicit — вона не потрапляє в бібліотеку автоматично.
filters.json — список, який веде батько. Дружнє пояснення + альтернативи, якщо пісню відхилено.
Автоматика ловить очевидне, людина — нюанси. Два рівні = подвійна сітка.
Тільки авто-фільтр — відхилено: він не розуміє контекст. Тільки ручний — занадто повільно.
AI підключив iTunes API. Людина веде filters.json і приймає фінальне рішення.
Тестовий кейс: «Test Rap» (explicit) → rejected. Фільтр працює.
Кнопка «Хочу пісню» → запит летить батьку в Telegram. Sonya бачить статус.
Дитина сама вибирає, але батько контролює. Напівавтоматична черга.
Повністю автоматичне додавання — відхилено: батько має бачити кожну пісню.
AI збагачує повідомлення (назва, артист, ✅ Clean/⚠️ Explicit, iTunes-посилання). Людина натискає «додати».
Потягніть повзунок: Light Lavender (мокап) → Темна сцена.
Темна тема, SVG-іконки (не емодзі), градієнтний прогрес-бар.
«Темна сцена» — як концертний зал: музика в центрі уваги.
Light lavender і Sidebar — відхилено з 3 мокапів.
AI зробив 3 мокапи. Соня сама обрала «Темну сцену».
Дрібниця, яка змінила відчуття: кнопки стали професійними, а не «іграшковими».
Чисті SVG-іконки: shuffle, prev, play/pause, next, repeat, lyrics, volume.
Емодзі виглядають по-різному на різних пристроях. SVG — однакові всюди.
Емодзі — відхилено: непослідовно. Іконковий шрифт — відхилено: зайва залежність.
AI намалював SVG. Людина помітила, що емодзі «не те».
Функції, які ми підключили, щоб Соня сама досліджувала музику — безпечно.
Кожна функція — це рішення «чому саме так», прийняте разом: AI запропонував, людина вирішила.
Звучить тривіально. Але відповідь виявилась нетривіальною.
Закриті parental control на iPad та iPhone. Не можна.
Безкоштовно, але немає мейджор-лейблів. Немає того, що хоче Соня.
16+. API закритий. Не для 10-річної.
Безкоштовно + легально + мейджор-лейбли + на вимогу — такого готового рішення не існує. Довелось придумати своє.
Але з розумним механізмом, який тримає все під контролем батька.
Напівавтоматична черга: запит → схвалення → скачування.
Батько бачить кожен трек ДО того, як він потрапить до Соні.
Пряме скачування — без контролю. Піратські сайти — нелегально.
AI скачує і чистить теги. Людина схвалює кожен трек.
Це не спонтанна ідея. Кожен елемент уже існував у платформі Pendragon — треба було лише скласти їх у повну картину.
Жоден із цих блоків не створювався для плеєра — вони були частиною платформи.
Плеєр — це не новий код, а нова комбінація існуючих можливостей платформи.
Нова цінність — не в коді, а в комбінації готових блоків.
Не треба будувати інфраструктуру — вона вже була.
Кожен блок уже перевірений іншими задачами платформи.
AI зібрав блоки. Людина вирішила, яку картину скласти.
Скачування музики — не нова фіча. Це готовий скіл платформи, який просто підключили.
Скачування аудіо з YouTube — вже використовувалось у платформі.
Той самий скіл став механізмом «Хочу пісню» → додавання в бібліотеку.
Кожен баг — це «ось що пішло не так → ось як знайшли → ось що змінилося». Чесні провали — найсильніший контент.
Формула: AI виконує крок за специфікацією, людина перевіряє і приймає рішення.
Сама вибирає пісні, бачить статус запитів, слухає без ризику негативного контенту.
Повний контроль: що додається, що відхиляється. Спокій за контент.
Дитина вибирає сама, без ризику негативного контенту.
AI допоміг побудувати, але продукт працює без AI — і це сказано прямо.
Сила — у воркфлоу та інфраструктурі, а не в одній фічі.
Все обмежується лише баченням, потребою — і трошки фінансами.
Процес, воркфлоу, інфраструктура — вже відбудовані. Наступні кроки — лише питання бажання.