Перейти к содержимому
d.nikolaev
Все проекты
ФлагманПродуктПод NDA

Образовательная платформа: единая точка входа

Личный кабинет студента после редизайна: чаты в реальном времени, нативные уведомления, две сборки

Роль
Frontend-разработчик: редизайн, чаты, уведомления, оптимизация
Период
март 2025 г. — по настоящее время
Команда
6 человек
Компания
LazurM

Детали и код закрыты соглашением: описываю задачи и решения без раскрытия внутренностей.

Обезличенный кабинет образовательной платформы под пометкой NDA

Кабинет, из которого студент попадает во все сервисы вуза: расписание, курсы, библиотека, финансы, практика, портфолио. Участвовал в редизайне и переводе на современный стек, делал чаты на WebSocket и систему уведомлений, включая нативные push.

Что сделано

  • Две сборки под разные устройства: desktop и mobile с общим доменным слоем
  • Чаты в реальном времени: свой WebSocket-клиент с ping/pong, подписками на каналы и авторизацией соединения
  • Уведомления: живая доставка по сокету, история в интерфейсе и нативные push через Web Push API
  • Виртуализация длинных списков чатов и диалогов вместо постраничной подгрузки
  • Единая авторизация через SSO с несколькими профилями у одного пользователя
  • Схемы Zod на границе данных и типизированный роутинг с генерацией дерева маршрутов
  • Режим для слабовидящих как отдельная тема оформления

Контекст

Продукт

Платформа собирает в одном кабинете всё, что нужно студенту: расписание, курсы и материалы, электронную библиотеку, финансы, практику, выпускную работу, опросы и переписку с преподавателями.

Проект прошёл редизайн и смену стека: интерфейс собран на актуальном React с типизированным роутером, серверное состояние ведёт кеширующий слой запросов, клиентское — компактные сторы.

Задача

Задача

Сложность в реальном времени. Чаты и уведомления должны приходить мгновенно, при этом соединение обязано переживать спящий таб, потерю сети и переключение профиля.

Вторая сложность — объёмы. У активного студента десятки диалогов и сотни сообщений, и наивный рендер списка чатов заметно проседает на мобильных устройствах.

Третья — два клиента. Desktop и mobile отличаются интерфейсом, но не доменной логикой, и дублировать правила авторизации, уведомлений и запросов между ними было бы прямой дорогой к рассинхрону.

Решение

Решение

Чаты и уведомления приходят в реальном времени, в том числе когда вкладка закрыта. Длинные списки остаются отзывчивыми, а правила для desktop и mobile описаны один раз.

Результат

Результат

Кабинет получил живые чаты и уведомления, которые доходят до пользователя даже с закрытой вкладкой, а списки перестали тормозить на длинной истории.

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

Интерфейс

Обезличенный кабинет образовательной платформы под пометкой NDA

Связанные проекты