Thanks to visit codestin.com
Credit goes to GitHub.com

Skip to content

Good Greens — современный интернет-магазин здорового питания 🥦💪🏻

Notifications You must be signed in to change notification settings

Tami555/Good-Greens

Repository files navigation

🥗 Good Greens — Магазин здорового питания

Django React Docker PostgreSQL Redis RabbitMQ

Good Greens — полнофункциональный интернет-магазин здорового питания с системой рецептов, рекомендациями и отслеживанием заказов в реальном времени.

📌 Содержание

🌟 Особенности проекта

🛒 Основной функционал

  • Поиск и фильтрация продуктов по калориям, цене, категориям
  • Персональные рецепты — система подбора рецептов на основе продуктов в корзине
  • Онлайн-заказы с выбором способа доставки (самовывоз/курьер)
  • Трекинг заказов в реальном времени с email-уведомлениями

👤 Пользовательский опыт

  • Полная аутентификация (JWT, OAuth 2.0 через Google/GitHub)
  • Персональный кабинет с загрузкой аватаров
  • История заказов с детальным описанием
  • Избранное — сохранение любимых продуктов
  • Восстановление пароля через email

🚀 Технологические преимущества

  • Микросервисная архитектура (уведомления через RabbitMQ)
  • Асинхронные задачи с Celery + Redis
  • S3-хранилище (Yandex Cloud) для медиафайлов
  • Полная Docker-контейнеризация
  • Кэширование Redis для повышения производительности

🚀 Быстрый старт

Предварительные требования

  • Docker и Docker Compose
  • Git
  • Аккаунты в сервисах (опционально):
    • Yandex Cloud (для S3),
    • Google/GitHub (для OAuth),
    • YooKassa (для платежей)

Установка за 5 минут

# 1. Клонирование репозитория
git clone https://github.com/Tami555/Good-Greens.git
cd good-greens

# 2. Настройка переменных окружения
cp .env.example .env
# Отредактируйте .env файл, добавив свои ключи

# 3. Запуск всех сервисов
docker-compose up -d

# 4. Настройка базы данных
docker-compose exec drf python manage.py migrate
docker-compose exec drf python manage.py collectstatic --noinput
docker-compose exec drf python manage.py loaddata fixture_db.json
docker-compose exec drf python manage.py createsuperuser

# 5. Откройте в браузере:
# - Frontend: http://localhost:3000
# - Backend API: http://localhost:8000/api/v1/
# - Admin Panel: http://localhost:8000/admin/

📦 Запущенные сервисы

Сервис Порт Назначение
frontend_dev 3000 React с hot reload
nginx_backend 8000 Nginx для Django API
Postgresql 5432 База данных
redis 6379 Кэширование и брокер Celery
rabbitmq 5672/15672 Очереди сообщений
adminer 8080 Веб-интерфейс для PostgreSQL
flower 5555 Мониторинг Celery

🔧 Технологический стек

Backend

  • Django 4.2 + Django REST Framework — основной бэкенд
  • PostgreSQL — основная база данных
  • Redis — кэширование и брокер для Celery
  • Celery — асинхронные задачи
  • Gunicorn — WSGI сервер
  • JWT — аутентификация
  • OAuth 2.0 — социальная авторизация (Google, GitHub)
  • Django Storages + boto3 — работа с S3 (Yandex Cloud)

Frontend

  • HTML/CSS - каркас и стили
  • React 18 — основной фреймворк
  • React Router — навигация
  • Axios — HTTP-клиент
  • Yandex Maps API — интеграция карт

Инфраструктура

  • Docker + Docker Compose — контейнеризация
  • Nginx — reverse proxy и статика
  • RabbitMQ — брокер сообщений между сервисами
  • Git — контроль версий

Сторонние API

  • Yandex Cloud S3 — хранение изображений
  • Yandex Maps JavaScript API — карты и геокодирование
  • YooKassa API — обработка платежей
  • Google OAuth 2.0 — авторизация через Google
  • GitHub OAuth — авторизация через GitHub

📁 Структура проекта

good-greens/
├── backend/Good_Greens/          # Django проект
│   ├── users/               # Пользователи и аутентификация
│   ├── products/            # Товары и категории
│   ├── cart/                # Корзина покупок
│   ├── orders/              # Заказы и доставка
│   ├── recipes/             # Рецепты ПП
│   └── favourites/          # Избранное
│   ├── Good_Greens              # Конфигурация
│   ├── services              # Стороние API
│   └── requirements.txt         # Python зависимости
│   └── Dockerfile         # Docker файл
│   └── fixture_db.json         # Фикстуры для заполнения БД
│   └── gunicorn.py         # Настройка Gunicorn
│   └── manage.py
├── front/                       # React приложение
│   ├── src/
│   │   ├── components/          # React компоненты
│   │   ├── pages/               # Страницы приложения
│   │   ├── context/             # Глобальное состояние
│   │   └── API/                 # API клиент
│   │   └── hooks/                 # Кастомные хуки
│   │   └── images/                 # Изображения
│   │   └── routes/                # Маршрутизация страниц
│   │   └── styles/                # Глобальные стили
│   │   └── utils/                # Вспомогательные функции
│   │   └── App.js                # Корневой компонет
│   │   └── index.js                # Корневой JS файл
│   ├── public/
│   └── package.json
│   └── Dockerfile.dev         # Docker файл
├── notification-service/        # Микросервис уведомлений
│   ├── config/               # Конфигурация
│   ├── tasks/               # Celery задачи
│   ├── templates/               # Шаблоны писем
│   ├── main.py                  # Основной скрипт
│   ├── email_sender.py    # Отправитель сообщений
│   ├── Dockerfile         # Docker файл
│   └── requirements.txt
├── nginx/                       # Конфигурация Nginx
│   └── good_greens.conf
├── docker-compose.yml           # Docker Compose
└── .env.example                 # Пример переменных окружения

🎯 Ключевые возможности

🥦 Умные рецепты

Система анализирует продукты в корзине пользователя и показывает:

  • Какие рецепты можно приготовить из имеющихся продуктов
  • Недостающие ингредиенты с ссылками для покупки
  • Процент готовности каждого рецепта
  • Подробные инструкции с КБЖУ

📦 Отслеживание заказов

  • Real-time статусы (Создан → Собирается → Готов к выдаче → Доставлен)
  • Email-уведомления на каждом этапе
  • Интеграция с картами для отслеживания доставки
  • История всех заказов с фильтрацией

💳 Множество способов оплаты

  1. Онлайн оплата (YooKassa)
  2. Картой при получении
  3. Наличными курьеру

🚚 Гибкая доставка

  • Самовывоз из пунктов выдачи
  • Курьерская доставка
  • Интеграция с Яндекс Картами для указания адреса
  • Автоматический расчет стоимости доставки

🔐 Безопасность

  • JWT токены с refresh/access парами
  • CORS политика с белым списком доменов
  • Защита от CSRF и XSS атак
  • Валидация входных данных на всех уровнях
  • Безопасное хранение секретов в .env файлах

📊 Производительность

  • Кэширование Redis для частых запросов
  • Оптимизация запросов (select_related, prefetch_related)
  • Пагинация для больших списков
  • Lazy loading изображений
  • Gzip сжатие через Nginx
  • Статика через CDN (S3)

🤝 Разработка

Git Workflow

# 1. Создайте ветку
git checkout -b feature/awesome-feature

# 2. Сделайте коммиты
git add .
git commit -m "feat: add awesome feature"

# 3. Отправьте изменения
git push origin feature/awesome-feature

# 4. Создайте Pull Request

📚 Документация API

После запуска проекта документация доступна по адресам:

🚧 Развитие проекта

Планируемые улучшения

  1. 🎯 Система рекомендаций

    • Рекомендации на основе истории покупок
    • Персонализированные скидки
    • Накопление баллов
  2. 📊 Аналитика

    • Панель администратора с графиками. Работа с Grafana
    • CI/CD
    • более подробная работа с логами
    • A/B тестирование
  3. 🤖 Автоматизация

    • Чат-бот для заказов

⭐ Если вам понравился проект, поставьте звезду на GitHub!

🐛 Баги и issues: GitHub Issues


Здоровое питание — это не диета, это образ жизни. Good Greens помогает сделать его проще и вкуснее. 🥑