MusClub Manager — веб-приложение для NSU Music Club, которое объединяет планирование мероприятий, управление задачами/активностями и коммуникацию с участниками в одном месте, вместо разрозненных Google Sheets / Trello / ручных сообщений в мессенджерах.
Проект развивается как Progressive Web App (PWA) — удобно открывается и на телефоне, и на ПК, при этом основной сценарий — управление с мобильного "здесь и сейчас".
- Создание и ведение мероприятий (основные данные: дата/время, место, описание).
- Привязка участников к конкретному мероприятию (важно для рассылок и ответственности).
- Модель "планирования через сущности/активности" (единая логика для разных элементов подготовки: задачи, пункты программы, таймплан, список оборудования и т.д.).
- Поддержка статусов:
not started,in progress,nearly finished,completed,canceled,failed.
- Реализованы push-уведомления через браузер с использованием Web Push API и VAPID:
- Напоминания за 24 часа, 2 часа и 15 минут до начала мероприятия
- Уведомления получают только участники, назначенные на это мероприятие
- Уведомления об обновлении или отмене мероприятия
- Возможность отправки немедленных уведомлений организатором
- Архитектура предусматривает расширение на другие каналы (Telegram и т.п.).
- Централизованная обработка всех типов ошибок API
- Структурированные JSON-ответы с кодами ошибок
- Валидация входных данных с детальными сообщениями
Сейчас организация обычно выглядит так: таблицы для времени/места/участников, отдельная таблица для таймплана, отдельная — для программы, списки оборудования, ручная рассылка и ручные напоминания. Это неудобно и приводит к ошибкам.
MusClub Manager переводит процесс в единый поток:
- мероприятие как "центр" всей подготовки;
- участники и ответственности связаны с мероприятием;
- прогресс виден по статусам;
- напоминания запускаются автоматически.
- Event — мероприятие как корневая сущность.
- Участники мероприятия — назначение людей на конкретное событие.
- Активности/задачи — единая модель для пунктов подготовки (со статусами).
- Push-уведомления — планирование и отправка отложенных напоминаний через браузер.
- Backend: Java 17+ / Spring Boot 3.3 / Gradle
- Frontend: Next.js / React / TypeScript / PWA
- Database: PostgreSQL + Flyway migrations
- Notifications: Web Push API (VAPID)
- API Docs: OpenAPI / Swagger
npx web-push generate-vapid-keyspush:
vapid-public-key: ${VAPID_PUBLIC_KEY}
vapid-private-key: ${VAPID_PRIVATE_KEY}
vapid-subject: mailto:admin@musclub.nsu.ru
notification-icon: /icon-192x192.png
max-retries: 3
scheduler-interval: 30000
default-reminder-intervals: 1440, 120, 15 # минуты: 24ч, 2ч, 15мин- 🔐 Аутентификация и авторизация (JWT, роли: организатор/участник/наблюдатель)
- 📊 Dashboard с аналитикой мероприятий
- Гибкие правила напоминаний на уровне пользователя
- Улучшение UX сценария "организатор всё делает с телефона"
Проект находится в активной разработке: базовая архитектура и ключевые сценарии уже собраны, реализован механизм push-уведомлений, продолжается расширение функциональности и удобства пользовательского потока.