Добавить к сайту Laravel интерактивные уведомления

7 000 руб. за проект
30 сентября 2020, 23:00 • 2 отклика • 40 просмотров
К существующему сайту на Laravel с bootstrap, jquery, livewire нужно добавить функционал уведомлений.
Использовать livewire для интерактивности на фронте и Laravel Notifications для создания/управления уведомлениями.
Уведомления должны создаваться системой из различных контроллеров и job'ов. Храниться в БД.
Появляться должны в ~ реальном времени если у пользователя открыт сайт:
1) в меню уведомлений и
2) в всплывающем окне через pNotify (уже встроен)

Интерактивность появления уведомлений и подгрузку данных в меню уведомлений реализовать через livewire, обращаться к серверу раз в 5 секунд.

Меню уведомлений:
В верхнем меню сайта добавить кнопку уведомлений - Колокольчик.
На кнопке уведомлений показывать badge с количеством непрочитанных сообщений (интерактивно меняется если кол-во изменилось).
По нажатию на кнопку появляется выпадающее окно/меню с непрочитанными уведомлениями.
Важно: livewire не должен грузить список непрочитанных уведомлений каждые 5 секунд при обращении к серверу, только кнопку с кол-вом уведомлений. Подгрузка списка уведомлений осуществляется при наведении мыши на кнопку. Показ списка (меню уведомлений) тоже при наведении на кнопку. Вот тут пример реализации https://otus.ru/notifications/.
Показываются последние 10 непрочитанных уведомлений.
У каждого уведомления в списке показывается дата создания (через Carbon в формате "3 часа назад") и текст уведомления. Текст уведомления может содержать ссылку куда либо. Справа от уведомления кнопка X по нажатию на которую уведомление скрывается из списка и становится прочтенным.
Внизу списка уведомлений ссылка "Еще", ведущая на страницу уведомлений /notifications
Вверху списка кнопка "Пометить все как прочитанное", отмечающая все показанные в окне уведомления как прочитанные и подгружающая новые непрочитанные уведомления. Если непрочитанных уведомлений больше нет - окно скрывается.
Выглядеть появляющееся окно с уведомлениями должно примерно так:

Создание уведомления
Должна быть возможность создания уведомлений с заданным текстом из любого контроллера или выполняемой по расписанию задачи laravel. Что то вроде notification::add($user_id, $text).

Страница уведомлений
На странице /notifications выводить список всех уведомлений пользователя с pagination и 2 чекбоксами readed/unread чтобы пользователь по умолчанию видел только непрочитанные уведомления но мог посмотреть так же прочитанные. Так же добавить кнопки "Пометить все как прочитанное" и "Прочитано" у каждого уведомления.
Подгрузка данных, пагинация и все кнопки реализуются через livewire без перезагрузки страницы.

Прочтение уведомления:
Уведомление становится прочитанным если
1. Пользователь нажал "Отметить все как прочитанное" или "Прочитано" для конкретного уведомления в окне с списком уведомлений или на странице /notifications
2. Если пользователь перешел по ссылке в уведомлении (добавлять что то вроде ?notify=12354 к ссылке)

В приложении есть модели/контроллеры/CRUD для 2 видов объектов - posts и products
Для демонстрации работы настроить появление уведомлений при создании объектов в posts и products с ссылками на созданные объекты.

Даем доступ к репозиторию на github и, если надо, VDS серверу с приложением.
Результаты нужно будет оформить коммитом в репозиторий.
Отзывы
R50 b16fa7918b0d6b6aec02611496197a96
Фрилансер
Работаем не первый раз. Как всегда всё хорошо. Своевременная оплата, грамотное ТЗ и всегда на связи. Сотрудничеством более чем доволен.
3 года назад