Написать страницу с лентой новостей, где отображается превью текст, картинка, заголовок, теги. Дизайн не важен, front может быть любой и не учитывается при проверке реализации.
У новостей должна быть возможность выставлять лайки и дизлайки Сортировка новостей в списке должна быть по следующему правилу:
- Сортировка идет по рейтингу. формула расчета рейтинга: количество лайков - количество дизлайков (Пример: лайков 5 дизлайков 1 . 5 - 1 = 4 - рейтинг статьи). Направление сортировки по убыванию
- Если рейтинг одинаковый сортировать по дате добавления.
Общие требования к выполнению задачи:
- Теги должны быть реализованы через связь много ко многим
- Лайки и дизлайки должны хранится в отдельной таблице (1 голос - одна запись)
- Новости нужно брать с RSS источника https://lenta.ru/rss/news и запускать парсинг при помощи команды из консоли. Обязательно отслеживать те записи которые уже были добавлены на сайт(если новость есть на сайте, то пропускаем и не обрабатываем ее). В консоле после выполнения выводим фразу “На сайт было добавлено {{количество}} новостей”
- Картинку сохранять файлом, а не ссылкой в базу.
- Обязательно учесть постраничную навигацию (Сортировка должна корректно работать с учетом разбиения вывода новостей по страницам)
- Таблицы создавать через миграции.
Время выполнения ограничено 4 часами.
- Сборка и запуск контейнеров
make up
- Установка npm пакетов
make npm-i
- Сборка css и js при помощи Vite
make vite-build
- Переход в php контейнер
make php
- Установка composer пакетов
composer install
- Запуск команды парсинга новостей
php artisan news:parse