Проект: разработка веб-приложения — генератора походных меню.
Стек: Django, Jinja, jQuery, MySQL
Заказчик: ИП Артём Тюрин
Срок: 1 месяц
Исполнители: Борисов Андрей, Муруз Данил
Проект сдан: 30/05/2022.
Ссылка на сервис:
https://kotelok.storeЧитать рекомендацию от заказчика → Что требовалось заказчику 1. База рецептов и ингредиентов. Важная потребность: возможность пополнять БД с помощью размеченных текстовых файлов. Например, в формате JSON.
2. Алгоритм генерации меню в формате png, состоящее из названия рецепта и его ингредиентов. При генерации нужно учитывать введенные пользователем в форме на сайте количество дней, количество человек и пожелания: только легкие продукты или увеличенный перекус. В меню также должны быть подсчитаны общие и средние количество калорий, БЖУ, вес всех продуктов.
3. Алгоритм генерации списка покупок в формате txt, состоящее из использованных ингредиентов, необходимого количества грамм и комментария к продуктам.
4. Подключение оплаты через ЮКассу и автоматическое скачивание файлов заказа после успешной оплаты. Цена на заказ должна формироваться в зависимости от количества дней, указанных пользователем.
Что мы сделали 0. Выбрали для развертывания виртуальный хостинг от beget как самое простое и дешевое решение — с учетом невысоких требований к серверу.
1. В качестве базы данных использовали MySQL. Для возможности добавления новых записей через текстовые файлы использовали встроенную в Django команду loaddata. Для автоматизации написали небольшой bash-скрипт, который подключается по SSH к серверу и запускает на нем команду loaddata.
2. По psd-макету от дизайнера сверстали шаблон для меню на HTML+CSS. Для заполнения шаблона использовали Jinja, который подставлял отфильтрованные рецепты из базы данных с учетом данных из формы. Написали алгоритм, который затем конвертирует эти файлы в png с помощью библиотеки imgkit и склеивает их в полноценное меню с помощью Pillow.
3. Написали алгоритм, который записывает все ингредиенты из использованных рецептов в txt-файл и добавляет к ним комментарий из БД при его наличии.
4. Использовали API ЮКассы для отправления запросов на выплату с учётом введенного количество дней. Настроили скачивание архива, в котором содержится меню и список покупок, когда ЮКасса сообщает об успешной оплате. Добавили логику изменения цены на фронтенде с учётом введенного количества дней.
Дополнительно: написали bash-скрипт для автоматического удаления архивов с оплаченными и выданными заказами каждый месяц, настроили админку для исправления рецептов с помощью встроенных в Django средств.