Необходимо с использованием фреймворка Laravel
реализовать сервис "Стена сообщений".
Решение данного задания рекомендуется размещать на GitHub, но если у вас нет такой возможности - вы можете разместить его на любом другом git-сервисе с публичным доступом.
Внимание! Не следует делать "fork" данного репозитория, и возвращать решение в виде PR.
-
Создаём репозиторий для решения, перейдя по данной ссылке. В поле "Repository name" вводим
avtocod-php-developer-test-task
и нажимаем "Create repository" -
На локальной машине открываем терминал, и (например) в домашней директории разворачиваем скелетон данного задания, после чего переходим в его директорию:
$ composer create-project avtocod/avtocod-php-developer-test-task ~/avtocod-php-developer-test-task
$ cd $_
Если в процессе разворачивания возникнут ошибки о том, что в системе не хватает каких-либо библиотек (например -
php-sqlite3
) - вам будет необходимо установить недостающие, после чего повторить выполнение командыcomposer create-project ...
- Убеждаемся в том, что приложение корректно развернулось и готово к использованию:
$ ./artisan
$ ./artisan migrate:install
В отдельном терминале можете запустить
./artisan serve --port 8080
, открыв в браузере 127.0.0.1:8080 - в этом случае вам не потребуется настраиватьnginx + php-fpm
- Инициализируем git-репозиторий и "подключаем" его к удалённому репозиторию, который был создан на первом шаге:
$ git init
$ git remote add origin git@github.com:%USERNAME%/avtocod-php-developer-test-task.git
- Коммитим и пушим первые изменения:
$ git add .
$ git commit -m 'Skeleton deployed'
$ git push --set-upstream origin master
Содержит список всех сообщений. Сортировка - снизу-вверх (последнее добавленное сообщение - сверху). У каждого сообщения, помимо текста, указано имя (username) автора и опционально - аватар (используя API сервиса gravatar
, например).
Если пользователь авторизован, ему становится доступна форма отправки сообщения.
Сообщение не может быть пустым (или состоять только из пробелов). При попытке отправки такого сообщения - пользователю выдается предупреждение "Сообщение не может быть пустым".
После успешной отправки, сообщение пользователя сразу появляется на "стене".
Авторизованный пользователь может также удалять свои сообщения.
В случае неуспешной авторизации, пользователю выводится сообщение "Вход в систему с указанными данными невозможен".
Требования к логину и паролю пользователя могут быть следующие:
- Логин - только альфа-символы (
a-z
) (в любом регистре) + возможно цифры (0-9
), минимальная длинна - 8 символов; - Пароль - обязательно символы в верхнем и нижнем регистрах + цифры, минимальная длинна - 6 символов.
В случае не успешной регистрации, каждое некорректно заполненное поле должно быть снабжено сообщением об ошибке.
- Пункт “Главная” - ведет на главную страницу, показывается всегда;
- Пункты “Авторизация” и “Регистрация” показываются только не авторизованным пользователям.
Блок справа показывается только авторизованному пользователю. Содержит Имя пользователя и ссылку "Выход", нажав на которую, пользователь выходит из - под своей учетной записи.
Плюсом будет реализация возможности указания для определенных учётных записей прав "администратора" (
is_admin
), дающие возможность удалять чужие сообщения.
HTML-верстка находится в директории ./storage/markup
(bootstrap) - именно её необходимо использовать. Опционально можете сверстать свои представления.
Задание должно быть:
- Выполнено с использованием PHP фреймворка
Laravel
версии не ниже5.5
; - БД -
sqlite3
,PostgreSQL
; - Redis, Memcached - опционально, по желанию;
- Разрешено использовать любые сторонние composer-пакеты;
- Все реализуемые методы должны иметь корректный phpdoc-комментарий (описание на русском языке,
@params
,@return
); - Для проверки передаваемых приложению по HTTP данных использовать валидацию входящих запросов (
artisan make:request ...
); - База данных должна создаваться с помощью миграций (никаких sql-файлов);
- База данных должна наполняться фейковыми записями с помощью механизма сидов;
- Для всего реализованного функционала должны быть написаны Unit-тесты (
phpunit
); - После завершения работы в данном readme-файле описать все действия, необходимые для запуска приложения (текущее содержание можно удалить) с опциональными комментариями по решению задания.
- Интуитивно-понятное разбитие коммитов - одной конкретной задаче - один коммит (её правки - отдельный коммит);
- Текст коммитов - на английском языке;
- Написание
docker-compose.yml
, который запускает написанное приложение.
Ссылку на репозиторий с вашей реализацией необходимо отправить нашему HR или TeamLead, от которого вы получили ссылку на данный репозиторий.
Приложение должно успешно запускаться после выполнения:
$ git clone https://github.com/%USERNAME%/avtocod-php-developer-test-task.git ./test-task && cd $_
$ composer install
$ ./artisan migrate --seed
$ ./artisan serve --port 8080
И проходить все тесты:
$ composer test
Если в процессе выполнения у вас возникнут какие-либо неразрешимые вопросы - создайте соответствующий issue в данном репозитории. На вопросы касательно деталей реализации ("А лучше так и так?") - вероятнее всего вы получите ответ "Как вы посчитаете правильнее".