Проект #4

Менеджер задач

Профессия PHP-программист

Проектирование. Нормализация (и Денормализация) базы данных, связи между сущностями. ORM. Heroku (PaaS). Трекинг ошибок в продакшене с Rollbar. Фреймворк Laravel.

2-4
недели
Иконка профессии PHP-программист

Цель

Способность создавать с нуля полноценные сайты, используя современные технологии – то, ради чего приходят на Хекслет. 4 проект подводит черту всего обучения и включает в себя все ключевые аспекты разработки сайтов.

Большое внимание в этом проекте уделяется созданию сущностей с помощью ORM и описанию связей между ними (o2m, m2m). Студентам предстоит спроектировать модели и их отображение на базу данных. Благодаря этому появляется возможность повысить уровень абстракции и оперировать не сырыми данными, а связанными наборами объектов с удобным (семантическим) доступом к зависимым сущностям.

Наличие сущностей даёт более простую работу с тестами. Теперь тестовые данные создаются не руками, а с помощью механизма фабрик. Фабрики описывают формат данных и по запросу создают сущности, сразу добавляя их в базу.

Для большего уровня автоматизации, в проекте используется ресурсный роутинг, который позволяет унифицировать и упростить работу с типичными CRUD–операциями. Так вырабатывается правильный взгляд на формирование урлов их связь друг с другом.

CRUD-операции тесно связаны с формами, которые используются для создания и редактирования сущностей. По умолчанию Laravel предоставляет очень ограниченную поддержку форм, из-за чего приходится тратить на них много времени (по-настоящему много!). В проект добавлена библиотека, позволяющая значительно ускорить генерацию форм и вывод ошибок для них.

Как только на сайте появляются пользователи с возможностью что-то создать, тут же возникает авторизация. Авторизация – процесс выдачи прав на действия над ресурсами и контроля их выполнения. Он часто задействуется при попытке изменить запрещенные вещи, например, настройки чужого пользователя. Механизм авторизации в Laravel встроен в сам фреймворк, настолько это важная вещь. В проекте авторизация отрабатывается на 100%.

Одна из важных и типовых задач в веб-разработке – создание форм для фильтрации данных. При неправильном подходе эта задача превращается в большой комок запутанного кода. Проект позволяет отработать этот момент, используя удобные библиотеки, которые показывают правильный путь решения данной задачи.

Эксплуатация проекта не менее важна чем разработка. Разработчик должен быть уверен, что его код работает правильно, и для этого он пишет тесты. Но тесты не могут гарантировать 100% работоспособности, поэтому нужен механизм отслеживающий ошибки возникающие в продакшене и оповещающий о них. Эту задачу решают коллекторы ошибок, например, Rollbar. Подобный сервис собирает ошибки в режиме реального времени и отправляет информацию о них в любые возможные каналы, такие как слак или почта. Проект – хороший способ потренироваться интегрировать такой сервис.

Описание

Task Manager – система управления задачами, подобная http://www.redmine.org/. Она позволяет ставить задачи, назначать исполнителей и менять их статусы. Для работы с системой требуется регистрация и аутентификация.

Вопросы и ответы

Какое расписание у проекта?

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

Как оплачивается проект?

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

Зачем нужны проекты?

Проект помогает реализовать на практике то, что вы узнали на курсах. Важный момент: написанный вами код навсегда остается в вашем репозитории на GitHub. Фактически это ваша первая работа в портфолио.

Что делает наставник в проектах?

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

У меня есть другой вопрос

Пишите нам на support@hexlet.io, вам ответит живой человек из команды Хекслета. Или нажмите на иконку со знаком вопроса в правом нижнем углу экрана. Там есть ответы и на другие вопросы и удобная форма для отправки сообщения нам.