R50 a83b423ca96894c9231717d352fcbd40
Разработчик Django, Nuxt.js

Генератор походных меню «Котелок»

Добавлено 28 июн 2022 в 23:52
Проект: разработка веб-приложения — генератора походных меню.
Стек: 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 средств.
90a96153d0 2565389196 9809ab284d