📢 Announcement
Kick off
Fedor Borshev
Привет!
У нашей школы есть своя LMS. Она 100500 раз меньше, чем LMS Вебиума, но нам хватает. Сейчас у неё есть три применения — просмотр материалов, редактирование профиля студента (важно для дипломов) и работа с домашками.
Проблема в том, что код нашей LMS — говно: как с точки зрения вёрстки, так и с точки зрения компонентов.
Хочу переписать его нормально и понятно. Предлагаю работать без макетов и использовать в качестве отправной точки текущее состояние LMS — прямо заходить и нормально верстать\разбивать на компоненты. Расскажу о функциональности, которая уже есть.
У нашей школы есть своя LMS. Она 100500 раз меньше, чем LMS Вебиума, но нам хватает. Сейчас у неё есть три применения — просмотр материалов, редактирование профиля студента (важно для дипломов) и работа с домашками.
Проблема в том, что код нашей LMS — говно: как с точки зрения вёрстки, так и с точки зрения компонентов.
Хочу переписать его нормально и понятно. Предлагаю работать без макетов и использовать в качестве отправной точки текущее состояние LMS — прямо заходить и нормально верстать\разбивать на компоненты. Расскажу о функциональности, которая уже есть.
Беспарольный и парольный вход
Тут вроде понятно — можно либо запросить с бекенда ссылку для входа с одноразовым токеном, либо ввести логин\пароль.
Аунтификация у нас привычная, на JWT.
Ошибочные состояния сейчас проработаны плохо. Исполнителю предлагается проработать это самостоятельно.
Аунтификация у нас привычная, на JWT.
Ошибочные состояния сейчас проработаны плохо. Исполнителю предлагается проработать это самостоятельно.
Профиль студента
По адресу https://lms.tough-dev.school/profile студент может редактировать профиль — пол, имя на русском и английском, ссылку на гитхаб и телеграм.
Просмотр материалов курсов
При входе пользователю надо показывать главную страницу последнего курса, который он купил. Это тоже довольно просто — бекенд знает все эти курсы.
Если купленного курса нет — надо показывать страницу, в которой мы предлагаем перейти на сайт и купить курс.
Материалы почти всех курсов мы храним в LMS. Своего редактора контента у нас нет — мы просто пишем всё в ноушене и через хитрый ревёрс-инжениринг и кеш отдаём это на фронт. Получается, что мы спокойно работаем в ноушене — пишем, форматируем, комментим, а оно всё «само» появляется в LMS. Материалы курса перелинкованы друг с другом.
На фронте рендерим материалы при помощи [vue-notion](https://github.com/janniks/vue-notion), на беке мы по мотивам [notion-api-worker](https://github.com/splitbee/notion-api-worker) ревёрс-инженирнули API ноушена и отдаём на фронт.
Важно — бек сейчас у отдаёт 404 на все ошибки при просмотре материала:
Если купленного курса нет — надо показывать страницу, в которой мы предлагаем перейти на сайт и купить курс.
Материалы почти всех курсов мы храним в LMS. Своего редактора контента у нас нет — мы просто пишем всё в ноушене и через хитрый ревёрс-инжениринг и кеш отдаём это на фронт. Получается, что мы спокойно работаем в ноушене — пишем, форматируем, комментим, а оно всё «само» появляется в LMS. Материалы курса перелинкованы друг с другом.
На фронте рендерим материалы при помощи [vue-notion](https://github.com/janniks/vue-notion), на беке мы по мотивам [notion-api-worker](https://github.com/splitbee/notion-api-worker) ревёрс-инженирнули API ноушена и отдаём на фронт.
Важно — бек сейчас у отдаёт 404 на все ошибки при просмотре материала:
- Когда у ученика нет доступа к курсу с этим материалом
- Когда страница с материлом не расшарена для веба
- Когда введена страница, которой нет в системе\в ноущене.
Надо будет сделать нормальную обработку ошибок, сейчас её нет. Отдельно нужно предусмотреть сценарий, при котором у пользователя нормально загрузился один материал, но при переходе на другой материал ему, по недосмотру редактора, отдаётся 404.
Пример страницы с материалами — https://lms.tough-dev.school/materials/b7354aa250ef4241aa2513dcc7e6f7d8/
Домашка
На большинстве курсов студенты делают домашку. Как сущность домашка — это просто текст, типа «вспомните свой последний провал в переговорах. Какие тезисы из курса вы бы применили на этих переговоров». Студенты дают ответы на домашку в виде такого же текста. Иногда мы запускаем кросс-проверку — присылаем каждому студенту 3–5 домашек других студентов, на которые он даёт ответ.
Ответы на домашку устроены в виде древовидных комментов — у каждой домашки может быть сколько угодно детей — таких же домашек, со своими детьми. Зная UUID домашки, её может посмотреть кто угодно — это сделано, чтобы студенты могли обмениваться друг с другом ссылками на свои домашки и комментить их.
Как редактор мы сейчас используем [SimpleMDE](https://simplemde.com). Он, хотя и корявый, но вроде работает норм. По-идее, если просто перетащить весь компонент редактора в новый проект, всё будет работать.
Ответы на домашку устроены в виде древовидных комментов — у каждой домашки может быть сколько угодно детей — таких же домашек, со своими детьми. Зная UUID домашки, её может посмотреть кто угодно — это сделано, чтобы студенты могли обмениваться друг с другом ссылками на свои домашки и комментить их.
Как редактор мы сейчас используем [SimpleMDE](https://simplemde.com). Он, хотя и корявый, но вроде работает норм. По-идее, если просто перетащить весь компонент редактора в новый проект, всё будет работать.
Сценарии работы с домашкой
Даём ответ на домашку
Студент получил ссылку на домашку. По ссылке видит задание «вспомните свой последний провал в переговорах. Какие тезисы из курса вы бы применили на этих переговоров». Даёт ответ в редакторе.
После дачи ответа он видит свой текст в правильном оформлении, может в течение 30 минут его отредактировать. В течение 10 минут — удалить.
Может поделиться домашкой — скопировать ссылку из адресной строки. Если любой аунтифицированный пользователь перейдёт по этой ссылке — он увидит его домашку.
Пример такой страницы — https://lms.tough-dev.school/homework/answers/5daf0598-b2f8-4450-8746-8057a4a4ad60
Проверяем чужую домашку
Студент получает в чате или почте одну или несколько ссылок на чужие домашки. Переходя по ссылке он видит ответ домашку и все чужие комментарии к нему.
Студент может дать ответ как на домашку, так и на любой другой комментарий. Как только появляется ответ — все причастные к домашке студенты получают уведомления (это уже работает на беке)
В течение 10 минут ответ на домашку можно удалить, в течение 30 минут — отредактировать.
Эксперт проверяет домашку
Раз в неделю в домашку по прямой ссылке (/question-admin/<homework_slug>/) заходит эксперт. Он видит все ответы всех студентов, без комментариев (чтобы страница грузилась не супер-долго).
Может зайти в каждую домашку (откроется такая же страница, как для всех других) и дать ответ.
Никакого учёта, ответил уже эксперт на конкретную домашку или нет, не ведётся. Сделаем в будущем.
Пример страницы эксперта — https://lms.tough-dev.school/homework/question-admin/58f234f3-3539-475a-8e1b-3680f59cdd44/
Студент получил ссылку на домашку. По ссылке видит задание «вспомните свой последний провал в переговорах. Какие тезисы из курса вы бы применили на этих переговоров». Даёт ответ в редакторе.
После дачи ответа он видит свой текст в правильном оформлении, может в течение 30 минут его отредактировать. В течение 10 минут — удалить.
Может поделиться домашкой — скопировать ссылку из адресной строки. Если любой аунтифицированный пользователь перейдёт по этой ссылке — он увидит его домашку.
Пример такой страницы — https://lms.tough-dev.school/homework/answers/5daf0598-b2f8-4450-8746-8057a4a4ad60
Проверяем чужую домашку
Студент получает в чате или почте одну или несколько ссылок на чужие домашки. Переходя по ссылке он видит ответ домашку и все чужие комментарии к нему.
Студент может дать ответ как на домашку, так и на любой другой комментарий. Как только появляется ответ — все причастные к домашке студенты получают уведомления (это уже работает на беке)
В течение 10 минут ответ на домашку можно удалить, в течение 30 минут — отредактировать.
Эксперт проверяет домашку
Раз в неделю в домашку по прямой ссылке (/question-admin/<homework_slug>/) заходит эксперт. Он видит все ответы всех студентов, без комментариев (чтобы страница грузилась не супер-долго).
Может зайти в каждую домашку (откроется такая же страница, как для всех других) и дать ответ.
Никакого учёта, ответил уже эксперт на конкретную домашку или нет, не ведётся. Сделаем в будущем.
Пример страницы эксперта — https://lms.tough-dev.school/homework/question-admin/58f234f3-3539-475a-8e1b-3680f59cdd44/
Что я хочу от разработки
- Mobile-first LMS
- Хороший UI-kit на основе текущего
- Нормальный код с тестами
- Opensource. Пока работаем в закрытой репе, открывать будем прямо перед запуском.