Cook4You - это веб-приложение, которое станет незаменимым помощником по приготовлению блюд. Алгоритм учитывает множество индивидуальных предпочтений пользователя: непереносимость компонент, вкусовые предпочтения, аллергии, допустимое время готовки, сложность готовки и так далее. На основании этих данных, пользователю генерируется рецепт блюда с подробным описанием продуктов и пошаговой инструкцией по приготовлению. По желанию пользователь может запросить изображение блюда и в ответ получит достаточно точное изображение, которое описывает блюдо из рецепта.
- Бэкенд веб-приложения написан на Python
- Использована библиотека g4f для общения с gpt моделью
- Сервер работает на FastAPI + uvicorn. Написана OpenAPI спецификация для стандартизированных запросов на сервер (находится в папке files)
- Идентификация пользователя происходит по JWT токену с помощью библиотеки jose
- Реализованы подробное логирование и обработка ошибок
- Всё работает асинхронно
- В качестве базы данных выбрана MongoDB, а также асинхронная python библиотека motor. Хранилище поднимается в Docker, написан docker-compose файл
- Написаны тесты под базовый функционал и хранилище с помощью pytest, pytest_asyncio и testcontainers
-
Фронтенд веб-приложения написан на JavaScript
-
Использована библиотека React, инструмент Vite и CSS-фреймворк Tailwind
-
Реализованы 3 веб-страницы, исполняемые файлы страниц находятся в папке pages:
Страница регистрации/авторизации. Исполняемый файл AuthPage.jsx
Страница со списком чатов. Исполняемый файл ChatListPage.jsx
Страница с сообщениями в чате. Исполняемый файл ChatDetailPage.jsx
-
Все хендлеры, соответствующие OpenAPI спецификации запросов на бэкенд-сервер, находятся в папке handlers
-
Реализовано масштабирование блоков текста в зависимости от длины введённых сообщений
-
Реализована автоматическая прокрутка страницы к последнему сообщению в чате
-
Реализована проверка на просроченный JWT токен, чтобы не слать лишние запросы на сервер с явно невалидным токеном
Далее будет инструкция, как запустить веб-приложение. (Инструкция написана под Linux/MacOS)
-
Склонировать репозиторий командой
git clone git@github.com:Doughnutik/Cook4You.git -
Установить Docker. Он нужен для запуска MongoDB. Проверить, что в терминале выполняется команда
docker ps -
Установить pip - пакетный менеджер для Python
-
Установить Python версии от 3.13
-
Установить все необходимые библиотеки из файла requirements.txt (находится в папке model_server). Для этого в терминале введите команду
pip install -r requirements.txtиз папки model_server -
Скачать и установить Node.js с официального сайта
https://nodejs.org. Проверить, что в терминале выполняются командыnode -vиnpm -v -
В терминале из папки site_server выполнить команду
npm install, которая установит все необходимые зависимости и библиотеки -
В .env файле содержатся все переменные окружения (каждую можно менять на своё усмотрение). Что важно поменять:
DATABASE_USERNAME - логин для подключения к базе данных (аналогичное поле есть в docker-compose.yml)
DATABASE_PASSWORD - пароль для подключения к базе данных (аналогичное поле есть в docker-compose.yml)
JWT_SECRET - секретная подпись для JWT ключей. Нужно взять случайную длинную строку, например, здесь
https://horans.github.io/random/ -
Что означают остальные переменные:
CHAT_MODEL, IMAGE_MODEL - названия моделей
INITIAL_PROMPT, IMAGE_GENERATION_PROMPT - промпты для генерации текстовых ответов и изображений
JWT_TIME - время жизни JWT ключа
JWT_ALGO - алгоритм шифрования JWT ключа
Остальные переменные относятся к серверам и базе данных.
-
В терминале из папки model_server выполнить команду
docker-compose up -dдля создания контейнера с MongoDB (контейнер автоматически запустится после создания) -
Открыть 2 терминала из папок model_server и site_server. В первом выполнить команду
python3 main.py(запускает бэкенд сервер), во второмnpm run dev -
FastAPI сгенерирует Swagger документацию, по которой можно будет отправлять тестовые запросы, npm выдаст адрес сайта (
Local: ...), по которому можно будет перейти и протестировать весь функционал Cook4You