Skip to content

toyrik/mailSaver

Repository files navigation

Тестовое задание для backend-специалиста

Задача

Необходимо создать сервис для хранения и подачи писем через форму обратной связи. Письма должны храниться в базе данных. Отправка на почту в данной задаче не предусмотрено. То есть не нужно настраивать почтовый сервер и реализовывать функцию отправки почты. Сервис должен предоставлять API, работающее поверх HTTP в формате JSON. Форма должна содержать следующие поля:

  • Имя
  • E-mail
  • Текст сообщения
  • Чекбокс на согласие обработки перс данных

Требования

  • Язык программирования PHP;
  • Сверстать форму с отправкой письма (можно использовать api которое будет реализовано через axios, fetch);
  • Простая инструкция для запуска (в идеале — с возможностью запустить через docker-compose up, но это необязательно);
  • 3 метода: получение списка писем, получение одного письма, создание письма (отправка через форму обратной связи);
  • Обязательные поля - Имя, e-mail
  • Можно использовать любой php фреймворк (yii, laravel) если это упростит и ускорит выполнение задачи
  • База данных можно использовать любую бд: Mysql, Postgresql, MongoDb.
  • Финальную версию нужно выложить на github.com;
  • Сделать миграции или дамп бд в финале.

Если есть сомнения по деталям — решение принять самостоятельно, но в своём README.md рекомендуем выписать вопросы и принятые решения по ним.

Детали

Метод получения списка писем

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

Метод получения конкретного письма

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

Метод создания письма:

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

Усложнения

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

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

Запуск и использование

Для запуска потребуется наличие докера и докер-композа

Подключение по адресу: http://localhost:8000

Базу можно просмотреть: http://localhost:8080

Команды make

команда действие
init Используется для первоначальной сборки контейнеров
up Запускает контейнеры
down Останавливает запущенные контейнеры

Для применения миграций:

docker-compose run --rm php-cli php artisan migrate

Для заполнения базы тестовыми значениями:

docker-compose run --rm php-cli php artisan db:seed

Методы api

Метод путь действие
GET /api/messages/ возвращает список всех сообщений
GET /api/message/{id} Возвращает сообщение с соответствующим - id
POST /api/message/add Создаёт новую запись и возвращает её id

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published