Skip to content

MusClub-NSU/MusClub-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎶 MusClub Manager

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)

  • Реализованы 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

🔧 Конфигурация Push-уведомлений

1. Генерация VAPID ключей

npx web-push generate-vapid-keys

2. Настройка application.yml

push:
  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мин

🗺️ Roadmap

  • 🔐 Аутентификация и авторизация (JWT, роли: организатор/участник/наблюдатель)
  • 📊 Dashboard с аналитикой мероприятий
  • Гибкие правила напоминаний на уровне пользователя
  • Улучшение UX сценария "организатор всё делает с телефона"

📌 Статус проекта

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


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors