Skip to content

Тестовое задание. Небольшой сайт — статейник на Laravel 8, PHP 7.4, MySQL, Vue + Vuex, Docker

Notifications You must be signed in to change notification settings

sv-hmelevsky/laravel-app-test-task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHP 7.4 Laravel 8 Vue and Vuex SASS MySQL Docker Docker

О тестовом задании:

Небольшой сайт — статейник. Макет отсутствует. Текст статей сгенерирован через faker. В качестве CSS фреймворка — Bootstrap 5. В качестве JavaScript фреймворка — Vue.js + Vuex. Без реализации хранения изображения. В качестве заглушек изображения используется сервис placeholder.com. Вся логика реализована встроенным функционалом Laravel.

Разделы сайта:

  • Главная страница: URL: /
  • Каталог статей: URL: /article
  • Страница статьи: URL: /article/{slug}

Главная страница:

  • Навигационное меню с активным пунктом - Главная страница
  • 6 последних добавленных статей с миниатюрами и описанием. Сортировка LIFO

Каталог статей:

  • Навигационное меню с активным пунктом - Каталог статей
  • Стандартная пагинация Laravel, по 10 статей на страницу.
  • Мини-статья:
    • Превью изображения статьи
    • Заголовок статьи
    • Краткое описание - 100 символов.
    • Лайки, просмотры
    • Кликабельные теги

Страница статьи:

  • Изображения статьи
  • Заголовок статьи
  • Теги статьи (списком)
  • Текст статьи
  • Интерактивный счётчик лайков
  • Интерактивный счётчик просмотров (просмотр засчитывается спустя 5 секунд прибывания на странице)
  • Форма комментария с валидацией
  • Список комментариев

API:

Реализация позволяет избежать блокировки БД при большоем количестве запросов на инкрементацию счётчиков.

API методы:

GET /article-json - Возвращает ресурс статьи, в Request принимает Slug
PUT /article-views-increment - Инекрементирует счётчик просмотров.
PUT /article-likes-increment - Инекрементирует счётчик лайков.
POST /article-add-comment - Добавляет новый комментарий в очередь


Требования

Для комфортной работы и запуска необходимо:

Команды make

Для удобства в проект был добавлен Makefile который содержит команды сборки проекта. Команды необходимо выполняеть находясь на одном уровне с Makefile

make init: Полностью пересобирает проект. Удаляет тома, останавливает docker, обновляет образы из хаба, собирает их и поднимает контейнеры
make up: Поднимает контейнеры
make down: Останавливает контейнеры с флагом --remove-orphans
make restart: Останавливает контейнеры и поднимает их заново

Запуск проекта

  1. git clone имя_репозитория - Сперва клонируем репозиторий, после чего переходим в папку проекта.
  2. make init - Собираем проект.
  3. docker-compose exec app php artisan key:generate - Генерируем ключ приложения
  4. docker-compose exec app php artisan migrate:refresh --seed - Запускаем миграции и запускаем посев данных (в случае возникновения ошибки 1062 Duplicate entry, запустите команду ещё раз или два, пока не получите сообщение - Database seeding completed successfully. Такое случается т.к. генератор посева данных faker, ограничен в своей фантазии)
  5. docker-compose exec app composer install - Устанавливаем PHP зависимости
  6. docker-compose exec app composer dump-autoload -o - Загружаем классы которые должны быть добавлены в пакет /app/helpers
  7. docker-compose exec app npm install - Ставим NPM пакеты
  8. docker-compose exec app npm run dev - Запускаем NPM сборку
  9. Добавляем в файл /etc/hosts или C:\Windows\System32\drivers\etc\hosts - 127.0.0.1 laravelapp.ru Проект доступен по url: laravelapp.ru

About

Тестовое задание. Небольшой сайт — статейник на Laravel 8, PHP 7.4, MySQL, Vue + Vuex, Docker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages