Skip to content

Latest commit

 

History

History

ad

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

ТЗ на сервис работы с объявлениями

Задание

Необходимо создать сервис для хранения и подачи объявлений.

Объявления должны храниться в базе данных (MySQL, PostgreSQL). Сервис должен предоставлять API, работающее поверх HTTP в формате JSON.

Требования

  • Язык программирования PHP
  • Финальную версию выложить на github.com
  • Простая инструкция для запуска (в идеале — с возможностью запустить через docker-compose up, но это необязательно);
  • 3 метода: получение списка объявлений, получение одного объявления, создание объявления;
  • Валидация полей: не более 3 ссылок на фото, описание не более 1000 символов, название не более 200 символов;
  • Реализовать простой фронт на Vue.js (для дизайна можно использовать Vuetify, или аналоги);
  • Если есть сомнения по деталям — решение принять самостоятельно, но в своём README.md рекомендуем выписать вопросы и принятые решения по ним.

Детали

Метод получения списка объявлений

  • Пагинация: на одной странице должно присутствовать 10 объявлений;
  • Cортировка: по цене (возрастание/убывание) и по дате создания (возрастание/убывание);
  • Поля в ответе: название объявления, ссылка на главное фото (первое в списке), цена, дата создания.

Метод получения конкретного объявления

  • Обязательные поля в ответе: название объявления, цена, ссылка на главное фото, дата создания.
  • Опциональные поля (можно запросить, передав параметр fields): описание, ссылки на все фото.

Метод создания объявления:

  • Принимает все вышеперечисленные поля: название, описание, несколько ссылок на фотографии (сами фото загружать никуда не требуется), цена;
  • Возвращает ID созданного объявления и код результата (ошибка или успех).

Усложнения

Не обязательно, но задание может быть выполнено с любым числом усложнений:

  • Контейнеризация: есть возможность поднять проект с помощью команды docker-compose up;
  • Документация: есть структурированное описание методов сервиса. Идеально оформить все в Swagger;
  • Unit tests: постарайтесь достичь покрытия в 70% и больше;