Небольшой сайт — статейник. Макет отсутствует. Текст статей сгенерирован через faker. В качестве CSS фреймворка — Bootstrap 5. В качестве JavaScript фреймворка — Vue.js + Vuex. Без реализации хранения изображения. В качестве заглушек изображения используется сервис placeholder.com. Вся логика реализована встроенным функционалом Laravel.
- Главная страница: URL: /
- Каталог статей: URL: /article
- Страница статьи: URL: /article/{slug}
- Навигационное меню с активным пунктом - Главная страница
- 6 последних добавленных статей с миниатюрами и описанием. Сортировка LIFO
- Навигационное меню с активным пунктом - Каталог статей
- Стандартная пагинация Laravel, по 10 статей на страницу.
- Мини-статья:
- Превью изображения статьи
- Заголовок статьи
- Краткое описание - 100 символов.
- Лайки, просмотры
- Кликабельные теги
- Изображения статьи
- Заголовок статьи
- Теги статьи (списком)
- Текст статьи
- Интерактивный счётчик лайков
- Интерактивный счётчик просмотров (просмотр засчитывается спустя 5 секунд прибывания на странице)
- Форма комментария с валидацией
- Список комментариев
Реализация позволяет избежать блокировки БД при большоем количестве запросов на инкрементацию счётчиков.
GET /article-json
- Возвращает ресурс статьи, в Request
принимает Slug
PUT /article-views-increment
- Инекрементирует счётчик просмотров.
PUT /article-likes-increment
- Инекрементирует счётчик лайков.
POST /article-add-comment
- Добавляет новый комментарий в очередь
Для комфортной работы и запуска необходимо:
- Ubuntu 20.04, либо Win10 и WSL2 образ данной ОС (Ubuntu WSL2)
- Установленный Docker и Docker-compose последней версии
- Установленную в ОС утилиту make:
sudo apt install make
- PhpStorm
- Git
Для удобства в проект был добавлен Makefile
который содержит команды сборки проекта. Команды необходимо выполняеть находясь на одном уровне с Makefile
make init
: Полностью пересобирает проект. Удаляет тома, останавливает docker, обновляет образы из хаба, собирает их и поднимает контейнеры
make up
: Поднимает контейнеры
make down
: Останавливает контейнеры с флагом --remove-orphans
make restart
: Останавливает контейнеры и поднимает их заново
git clone имя_репозитория
- Сперва клонируем репозиторий, после чего переходим в папку проекта.make init
- Собираем проект.docker-compose exec app php artisan key:generate
- Генерируем ключ приложенияdocker-compose exec app php artisan migrate:refresh --seed
- Запускаем миграции и запускаем посев данных (в случае возникновения ошибки 1062 Duplicate entry, запустите команду ещё раз или два, пока не получите сообщение - Database seeding completed successfully. Такое случается т.к. генератор посева данных faker, ограничен в своей фантазии)docker-compose exec app composer install
- Устанавливаем PHP зависимостиdocker-compose exec app composer dump-autoload -o
- Загружаем классы которые должны быть добавлены в пакет /app/helpersdocker-compose exec app npm install
- Ставим NPM пакетыdocker-compose exec app npm run dev
- Запускаем NPM сборку- Добавляем в файл
/etc/hosts
илиC:\Windows\System32\drivers\etc\hosts
- 127.0.0.1 laravelapp.ru Проект доступен по url: laravelapp.ru