Найти тему

Кейс: блог о еде на Laravel

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

Приветствую вас, дорогие читатели.
Пару недель назад я выполнил заказ и решил поделиться с вами его результатами.

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

Текст, который я написал заказчику, выглядел так:
"Здравствуйте, готов реализовать поставленную вами задачу в лучшем виде. Похожую задачу мне уже приходилось выполнять и в этот раз справлюсь на "отлично"!) В своей работе использую наиболее эффективные инструменты, которые позволяют не только быстро разрабатывать проект, но и оптимизировать его по факту выполнения. Для вас это гарантирует высокое качество кода и высокую скорость загрузки, а так же общую оптимизацию. Пишите, буду рад с вами работать)".
И через пол часа началось обсуждение деталей работы.

Задача заключалась в том, чтобы создать сайт для рецептов с возможностью поиска по созданным записям.
Оказалось, что у заказчика не было дизайна. Я предложил несколько вариантов, среди которых были:

Заказчик выбрал второй вариант и началась работа.

На этот проект у меня были большие планы. Чтобы сделать работу в срок и наиболее эффективно, я использовал следующие инструменты:
1) Верстка. Gulp с плагинами для автообновления, компиляции less, расстановки префиксов для CSS. Так же использование сетки smart-grid для повышения скорости верстки типовых элементов. Так же необходимо убедиться, что код валидный(правильный). Для этого был использован сервис W3C.
2) Программирование backend. Laravel. Мне не хватало практики в работе с ним и решил исправить это недоразумение. Следуя правилам работы с Laravel были использованы такие встроенные инструменты, реализация логики по модели MVC, работа с миграциями, сидами и библиотекой Faker, использование шаблонизатора Blade.

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

На второй день я реализовал основную логику работы сайта - вывод постов из базы данных, просмотр каждого поста и пагинацию при выводе постов. Так же было необходимо реализовать разделение пользовательской части и панели администратора. Администратор же должен иметь возможность создавать, редактировать, удалять записи. Ну а раз есть разделение пользователей и администраторов, то нужно создать и возможность регистрации и авторизации. Благо Laravel предоставляет эту возможность "из коробки".

Оставшееся время ушло на реализацию поиска и фильтрации. Согласно требованиям заказчика, необходимо создавать возможность поиска рецепта по названию, категории и меткам(тегам).

Здесь пришлось порыться в своих знаниях и вспомнить о том, что такое JOIN и как с ним работать. Кроме того, пришлось повозиться с проверкой работы алгоритма, так как поиск может производиться:
1) Только по названию рецепта,
2) По названию и категории
3) По названию, категории и меткам
4) По категории и меткам
5) По категории
6) По меткам

В итоге был создан алгоритм, который по факту заполнения определенного поля добавляет необходимые условия(было ли заполнено поле названия, категории и т.д) и в итоге создает соответствующий SQL запрос для базы данных.

После были финальные тесты работы сайта. Результат таков:

На этом моя работа была закончена.

По договору с заказчиком я не могу распространять условия по данному сайту по просьбе заказчика. Обычно такие проекты я делаю за 7 тысяч рублей.

Спасибо, что дочитали его до конца.
Мне важна ваша поддержка и мнение, так что оставляйте его в комментариях. Если вам интересен код алгоритма поиска - напишите мне в личные сообщения вк, обязательно поделюсь.

Подписывайтесь на канал, чтобы первыми видеть новые публикации.
До встречи.