GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - avtocod/php-developer-test-task: PHP developer test task

BranchesTags
Open more actions menu

Latest commit

 

History

11 Commits
11 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
app
app
 
 
bootstrap
bootstrap
 
 
config
config
 
 
database
database
 
 
public
public
 
 
resources
resources
 
 
routes
routes
 
 
storage
storage
 
 
tests
tests
 
 
.dockerignore
.dockerignore
 
 
.editorconfig
.editorconfig
 
 
.gitignore
.gitignore
 
 
Dockerfile
Dockerfile
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
artisan
artisan
 
 
composer.json
composer.json
 
 
docker-compose.yml
docker-compose.yml
 
 
phpstan.neon.dist
phpstan.neon.dist
 
 
phpunit.xml.dist
phpunit.xml.dist
 
 
server.php
server.php
 
 

Repository files navigation

avtocod

Тестовое задание для PHP-разработчика

Project language Build Status Do something awesome

Необходимо с использованием фреймворка Laravel реализовать сервис "Стена сообщений".

Несмотря на то, что приложение вам может показаться очень простым - реализовать его можно по-разному. Выявление уровня знания фреймворка и понимания "лучших практик" - цель этого задания.

Описание необходимого функционала

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

Содержит список всех сообщений. Сортировка - снизу-вверх (последнее добавленное сообщение - сверху). У каждого сообщения, помимо текста, указано имя (username) автора и опционально - аватар (используя API сервиса gravatar, например).

Если пользователь авторизован, ему становится доступна форма отправки сообщения.

Сообщение не может быть пустым (или состоять только из пробелов). При попытке отправки такого сообщения - пользователю выдается предупреждение "Сообщение не может быть пустым".

После успешной отправки, сообщение пользователя сразу появляется на "стене".

Авторизованный пользователь может также удалять свои сообщения.

Авторизация

В случае неуспешной авторизации, пользователю выводится сообщение "Вход в систему с указанными данными невозможен".

Регистрация

Требования к логину и паролю пользователя могут быть следующие:

  • Логин - только альфа-символы (a-z) (в любом регистре) + возможно цифры (0-9), минимальная длинна - 8 символов;
  • Пароль - обязательно символы в верхнем и нижнем регистрах + цифры, минимальная длинна - 6 символов.

В случае не успешной регистрации, каждое некорректно заполненное поле должно быть снабжено сообщением об ошибке.

Главное меню (сверху)

  • Пункт “Главная” - ведет на главную страницу, показывается всегда;
  • Пункты “Авторизация” и “Регистрация” показываются только не авторизованным пользователям.

Блок справа показывается только авторизованному пользователю. Содержит Имя пользователя и ссылку "Выход", нажав на которую, пользователь выходит из - под своей учетной записи.

Плюсом будет реализация возможности указания для определенных учётных записей прав "администратора" (is_admin), дающие возможность удалять чужие сообщения.

Вёрстка

HTML-верстка находится в директории ./storage/markup (bootstrap) - именно её необходимо использовать. Опционально можете сверстать свои представления.

Требования к используемым технологиям

Задание должно быть:

  • Выполнено с использованием PHP фреймворка Laravel версии не ниже 7.0;
  • БД - PostgreSQL, sqlite3;
  • Redis, Memcached - опционально, по желанию;

Требования к реализации

  • Разрешено использовать любые сторонние composer-пакеты;
  • Все реализуемые методы должны иметь корректный phpdoc-комментарий (описание на русском языке, @params, @return);
  • Для проверки передаваемых приложению по HTTP данных использовать валидацию входящих запросов (artisan make:request ...);
  • Не следует излишне усложнять решение реализацией DDD или абстракциями ради абстракций - об этих вещах мы подискутируем на собеседовании;
  • База данных должна создаваться с помощью миграций (никаких sql-файлов);
  • База данных должна наполняться фейковыми записями с помощью механизма сидов;
  • Для всего реализованного функционала должны быть написаны Unit-тесты (phpunit);
  • После завершения работы в данном readme-файле описать все действия, необходимые для запуска приложения (текущее содержание нужно удалить) с опциональными комментариями по решению задания.

Плюсами будут являться

  • Настройка CI (силами GitHub actions, TravisCI, etc) выполняющая запуск тестов и сборки на каждый коммит;
  • Интуитивно-понятное разбитие коммитов - одной конкретной задаче - один коммит (её правки - отдельный коммит);
  • Реализация сервисного слоя приложения, содержащего бизнес-логику;
  • Текст коммитов - на английском языке;
  • Форматирование исходного кода с помощью php-cs-fixer ($ composer php-cs-fixer).
  • Успешное прохождение проверок статического анализатора phpstan ($ composer phpstan).

Как начать выполнение тестового задания?

Для выполнения задания лучше всего использовать данный репозиторий как шаблон, для чего просто перейдите по этой ссылке.

Данный репозиторий уже содержит Dockerfile, docker-compose.yml и Makefile для быстрого запуска приложения силами docker (нет необходимости устанавливать php, postgres и пр. локально). Всё, что необходимо - это установленные локально docker и docker-compose. После клонирования репозитория просто выполните make install && make up - и можно приступать к написанию полезного кода. Команда make up "запускает приложение" на определенном TCP порту (ссылка на него будет выведена в терминале), HTTP запросы обслуживает RoadRunner. Для отладки можно пользоваться функциями \dev\dump() и \dev\dd().

Результат выполнения

Ссылку на репозиторий с вашей реализацией необходимо отправить нашему HR или TeamLead, от которого вы получили ссылку на данный репозиторий.

Приложение должно успешно запускаться после выполнения:

$ git clone ... && cd $_
$ make install
$ make migrate
$ make up

И проходить все тесты:

$ make test

About

PHP developer test task

Topics

phptasktest

Resources

Readme

Code of conduct

Code of conduct

Contributing

Contributing
Activity
Custom properties

Stars

2 stars

Watchers

0 watching

Forks

2 forks
Report repository

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.