Skip to content

ershovdev/tapir_api

Repository files navigation

Доска объявлений - API

Тестовое задание (API доски объявлений) в компанию Тапир.


Стек

PHP 8
Laravel 8 - докеризированный через Sail с небольшими допилами (XDebug из коробки в контейнере, автоматический запуск воркеров для очередей)
Верстка - Bootstrap
Очереди - Redis
Дополнительно библиотеки - intervention/image для обработки изображений, laravel/telescope для отслеживания статуса джоб, mavinoo/laravel-batch - батч insert'ы и update'ы

Возможности

  1. API - создание и просмотр объявлений, все данные в запросах валидируются.
  2. Создание объявлений - отложенная загрузка изображений в очередях, наличие статусов:
    • Ready - успешно загружено
    • Pending - в процессе загрузки
    • Failed - произошла ошибка записи, по ссылке находится не картинка или иная ошибка
  3. Просмотр объявлений - через API или через интерфейс на сайте (в корне)
  4. Артизан для просмотра всех объявлений или одного выбранного

Запуск

Спулить репозиторий

Из корня проекта:

./bin/sail up

Проверим:

docker-compose ps

Должны увидеть примерно такую картину:

         Name                        Command               State                       Ports                     
-----------------------------------------------------------------------------------------------------------------
tapirapi_laravel.test_1   start-container                  Up      0.0.0.0:80->80/tcp, 8000/tcp                  
tapirapi_mailhog_1        MailHog                          Up      0.0.0.0:1025->1025/tcp, 0.0.0.0:8025->8025/tcp
tapirapi_mysql_1          docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp             
tapirapi_redis_1          docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp       

Заходим в контейнер, инсталлим все зависимости:

docker-compose exec laravel.test bash
composer install

Копируем .env, генерим ключ, запускаем миграции:

cp .env.example .env
php artisan key:generate
php artisan migrate

После:

sudo chmod -R 777 ./

На этом этапе проект должен быть полностью работоспособным - http://0.0.0.0 покажет список всех объявлений

Для проверка статуса воркеров из контейнера прописываем:

supervisorctl status

Артизан (аналогично, из под контейнера):

php artisan adverts:show
// or
php artisan adverts:show {id}

Ссылки

Swagger - http://0.0.0.0/api/swagger
Список объявлений - http://0.0.0.0
API - http://0.0.0.0/api
Telescope - http://0.0.0.0/telescope

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published