Евгений Сайты › Peppers Сбер ID
Сайты, SEO и GEO, реклама, чат-боты, ИИ и дизайн | Москва
Рейтинг
9 371
№ 111 в каталоге
Отзывы
Профессионализм
9/10
Коммуникация
9 /10
Город
Москва
Опыт работы
11 лет
На сайте с
2016 года
Юридический статус
Самозанятый
Freelance.Boutique
Премиум-сервис для лучших исполнителей

Создание сайта онлайн-школы музыки с уроком в браузере: видеосвязь на WebRTC, нотная доска на Socket IO, бэкенд на Nest.js

Используемые навыки Express JS Nest.js Node.js Socket IO WebRTC

Описание

Создание сайта для онлайн-школы музыки, где урок гитары или фортепиано идёт прямо в браузере: видео, чат, общая нотная доска и метроном, а рядом расписание и оплата. Сайт написал Евгений Росляков. Сайты и сервисы он пишет с 2016 года, работает самозанятым по договору, юрлицам даёт закрывающие документы. Находится в Москве, проекты берёт и удалённо.

Школа проводит уроки один на один. Раньше преподаватель и ученик встречались в стороннем видеосервисе, расписание лежало в таблице, оплата шла отдельной ссылкой. Ученик забывал, куда заходить, преподаватель искал, кто оплатил. Подводили и сами видеосервисы: звук отставал, а ноты можно было показать только экраном или фотографией.

Задача: личный кабинет, где ученик видит ближайший урок, нажимает одну кнопку и попадает в комнату урока.

Решение

Серверную часть написал на Nest.js, поверх Node.js. Nest делит приложение на модули: пользователи, расписание, оплаты, комнаты уроков. Каждый модуль можно менять отдельно. Для школы это важно, она добавляет возможности по ходу работы.

Видео и звук идут через WebRTC напрямую между браузерами преподавателя и ученика. Для двоих участников этого достаточно, задержка небольшая. Часть учеников сидит за корпоративными сетями и мобильным интернетом, где прямое соединение не устанавливается. Для них стоит TURN-сервер: он передаёт поток, когда напрямую связаться не получается. Звук настроил так, чтобы автоматическое шумоподавление не «резало» инструмент: гитара должна звучать как гитара, а не как голос в трубке. Эхо при этом остаётся проблемой, поэтому ученикам я советую наушники.

Общие элементы урока работают через Socket IO. Нотная доска: преподаватель отмечает такт, ученик сразу видит пометку. Метроном, у которого темп задаёт преподаватель и который звучит у обоих одновременно. Чат для ссылок и заметок. Socket IO сам переподключается при коротком обрыве, так что урок не прерывается на пустяке.

Старый API записи на уроки был написан на Express JS и уже работал с календарём школы. Переписывать его целиком не стал: Nest.js обращается к нему как к внешнему сервису, а запросы переносятся в новые модули по одному. Расписание не останавливалось ни на день.

После урока в кабинете остаются заметки преподавателя и задание на неделю.

Результат

Ученики заходят на урок со страницы школы, без сторонних приложений и ссылок в мессенджерах. Преподаватели видят график, оплаты и ноты в одном окне. Исчезла путаница «куда мне заходить» и «кто уже заплатил». Заметки и домашнее задание лежат в кабинете, и ученик перед следующим уроком видит, что делал в прошлый раз.

Старый API записи продолжает работать, а новые части подключаются рядом с ним без остановки школы. Когда все запросы переедут в Nest.js, Express JS можно будет выключить.

Ограничение известное для любой видеосвязи через браузер: играть вместе в одном темпе по сети нельзя, мешает задержка. Поэтому школа строит уроки как показ и повтор: преподаватель играет, ученик повторяет, метроном задаёт общий темп. Качество звука зависит от интернета ученика, хотя TURN-сервер спасает от обрывов в сложных сетях.

Дальше школа планирует запись урока для повторения дома и групповые занятия по теории.

Ведёте обучение онлайн и хотите сайт с видеоуроками, доской и кабинетом? Расскажите в сообщении на freelance.ru, как проходит ваше занятие. Подумаем, что нужно внутри.

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

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

Все проекты →
Веб-разработка и IT Отчёты в Oracle для расчётного центра ЖКУ: ночные сводки переписаны на Oracle PL/SQL, упрощены экраны в Oracle Forms, база Oracle 11g
Отчёты в Oracle для расчётного центра ЖКУ: ночные сводки переписаны на Oracle PL/SQL, упрощены экраны в Oracle Forms, база Oracle 11g
13
Дизайн и Брендинг Концепт электрокара-шаттла для курортов: автоскетчи и футуродизайн кузова, компоновка в SketchUp, AI Рендеринг для поиска образа и финальные рендеры в Keyshot
Концепт электрокара-шаттла для курортов: автоскетчи и футуродизайн кузова, компоновка в SketchUp, AI Рендеринг для поиска образа и финальные рендеры в Keyshot
14
Веб-разработка и IT База для учёта проката строительного инструмента: центральный SQL Server, правила на T-SQL, Microsoft Access как интерфейс шести пунктов выдачи
База для учёта проката строительного инструмента: центральный SQL Server, правила на T-SQL, Microsoft Access как интерфейс шести пунктов выдачи
11
Маркетинг и Продвижение GEO-продвижение сети стоматологий: карточки филиалов на Яндекс Картах, ORM и видимость в нейросетях
GEO-продвижение сети стоматологий: карточки филиалов на Яндекс Картах, ORM и видимость в нейросетях
15