Music Bingo Show — Notes

New Note

architecture8/1/2026

Модель данных

Основные сущности: - User: id, email, password_hash, role (admin/operator) - Track: id, title, artist, audio_file_path, cover_image_path, lyrics_lrc, hit_start_sec, hit_end_sec, source (youtube/yandex/manual) - Game: id, code (уникальный), title, background_image, status (draft/ready/in_progress/finished), created_by - GameRound: id, game_id, round_number, break_duration_sec - GameTrack: id, game_id, round_id, track_id, number (1–90) - Ticket: id, game_id, format (5x5/4x4/4x5/5x4), numbers (JSON array) - Slide: id, game_id, type (welcome/rules/sponsors), content (JSON), order

#database#models
note8/1/2026

Бюджет и сроки

Общий бюджет: 150 000 ₽ Общий срок: 4 недели Оплата: 50/50 (75 000 предоплата + 75 000 при сдаче) Распределение: - Этап 01 Игровое ядро: 55 000 ₽ (Н1–Н2) - Этап 02 Конструктор + билеты: 30 000 ₽ (Н2–Н3) - Этап 03 Медиатека: 30 000 ₽ (Н3) - Этап 04 Редактор слайдов: 15 000 ₽ (Н3–Н4) - Этап 05 Активности + офлайн: 20 000 ₽ (Н4) КП: /Users/petrvoronov/Documents/BigCoding/MusicBingo/КП MusicBingoShow.pdf Дизайн-спек: /Users/petrvoronov/Documents/BigCoding/MusicBingo/docs/superpowers/specs/2026-08-01-musicbingoshow-design.md

#budget#timeline
decision8/1/2026

Архитектурные решения

1. Платформа: веб-сайт (не десктоп) 2. Стек: React (TypeScript) + FastAPI (Python) + PostgreSQL + Redis 3. Деплой: VPS, Docker Compose (Nginx + FastAPI + PostgreSQL + Redis + Celery Worker) 4. Два экрана: оператор (ноутбук/планшет) + дисплей (ТВ), синхронизация через WebSocket 5. Офлайн: Service Worker + Cache API + IndexedDB, предзагрузка перед мероприятием 6. Караоке: построчная подсветка, LRC-формат 7. Аутентификация: JWT (httpOnly cookies), роли admin/operator 8. Дисплей (/display/{code}): доступ без полной аутентификации, только по коду игры 9. Участники: только бумажные билеты (PDF), без веб-интерфейса 10. Источники треков: YouTube (yt-dlp) + Яндекс.Музыка + ручная загрузка MP3 11. Фоновые задачи: Celery + Redis (парсинг, анализ аудио через librosa)

#architecture#decisions