Skip to content

Doughnutik/Cook4You

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Cook4You

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

Backend

  1. Бэкенд веб-приложения написан на Python
  2. Использована библиотека g4f для общения с gpt моделью
  3. Сервер работает на FastAPI + uvicorn. Написана OpenAPI спецификация для стандартизированных запросов на сервер (находится в папке files)
  4. Идентификация пользователя происходит по JWT токену с помощью библиотеки jose
  5. Реализованы подробное логирование и обработка ошибок
  6. Всё работает асинхронно
  7. В качестве базы данных выбрана MongoDB, а также асинхронная python библиотека motor. Хранилище поднимается в Docker, написан docker-compose файл
  8. Написаны тесты под базовый функционал и хранилище с помощью pytest, pytest_asyncio и testcontainers

Frontend

  1. Фронтенд веб-приложения написан на JavaScript

  2. Использована библиотека React, инструмент Vite и CSS-фреймворк Tailwind

  3. Реализованы 3 веб-страницы, исполняемые файлы страниц находятся в папке pages:

    Страница регистрации/авторизации. Исполняемый файл AuthPage.jsx

    Страница со списком чатов. Исполняемый файл ChatListPage.jsx

    Страница с сообщениями в чате. Исполняемый файл ChatDetailPage.jsx

  4. Все хендлеры, соответствующие OpenAPI спецификации запросов на бэкенд-сервер, находятся в папке handlers

  5. Реализовано масштабирование блоков текста в зависимости от длины введённых сообщений

  6. Реализована автоматическая прокрутка страницы к последнему сообщению в чате

  7. Реализована проверка на просроченный JWT токен, чтобы не слать лишние запросы на сервер с явно невалидным токеном

Install

Далее будет инструкция, как запустить веб-приложение. (Инструкция написана под Linux/MacOS)

  1. Склонировать репозиторий командой git clone git@github.com:Doughnutik/Cook4You.git

  2. Установить Docker. Он нужен для запуска MongoDB. Проверить, что в терминале выполняется команда docker ps

  3. Установить pip - пакетный менеджер для Python

  4. Установить Python версии от 3.13

  5. Установить все необходимые библиотеки из файла requirements.txt (находится в папке model_server). Для этого в терминале введите команду pip install -r requirements.txt из папки model_server

  6. Скачать и установить Node.js с официального сайта https://nodejs.org. Проверить, что в терминале выполняются команды node -v и npm -v

  7. В терминале из папки site_server выполнить команду npm install, которая установит все необходимые зависимости и библиотеки

  8. В .env файле содержатся все переменные окружения (каждую можно менять на своё усмотрение). Что важно поменять:

    DATABASE_USERNAME - логин для подключения к базе данных (аналогичное поле есть в docker-compose.yml)

    DATABASE_PASSWORD - пароль для подключения к базе данных (аналогичное поле есть в docker-compose.yml)

    JWT_SECRET - секретная подпись для JWT ключей. Нужно взять случайную длинную строку, например, здесь https://horans.github.io/random/

  9. Что означают остальные переменные:

    CHAT_MODEL, IMAGE_MODEL - названия моделей

    INITIAL_PROMPT, IMAGE_GENERATION_PROMPT - промпты для генерации текстовых ответов и изображений

    JWT_TIME - время жизни JWT ключа

    JWT_ALGO - алгоритм шифрования JWT ключа

    Остальные переменные относятся к серверам и базе данных.

  10. В терминале из папки model_server выполнить команду docker-compose up -d для создания контейнера с MongoDB (контейнер автоматически запустится после создания)

  11. Открыть 2 терминала из папок model_server и site_server. В первом выполнить команду python3 main.py (запускает бэкенд сервер), во втором npm run dev

  12. FastAPI сгенерирует Swagger документацию, по которой можно будет отправлять тестовые запросы, npm выдаст адрес сайта (Local: ...), по которому можно будет перейти и протестировать весь функционал Cook4You

About

Platform for cooking with current ingredients using GPT ideas of dishes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors