Good Greens — полнофункциональный интернет-магазин здорового питания с системой рецептов, рекомендациями и отслеживанием заказов в реальном времени.
- Особенности проекта
- Быстрый старт
- Технологический стек
- Структура проекта
- Ключевые возможности
- Разработка
- Документация API
- Развитие проекта
- Поиск и фильтрация продуктов по калориям, цене, категориям
- Персональные рецепты — система подбора рецептов на основе продуктов в корзине
- Онлайн-заказы с выбором способа доставки (самовывоз/курьер)
- Трекинг заказов в реальном времени с 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 (для платежей)
# 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 |
- Django 4.2 + Django REST Framework — основной бэкенд
- PostgreSQL — основная база данных
- Redis — кэширование и брокер для Celery
- Celery — асинхронные задачи
- Gunicorn — WSGI сервер
- JWT — аутентификация
- OAuth 2.0 — социальная авторизация (Google, GitHub)
- Django Storages + boto3 — работа с S3 (Yandex Cloud)
- HTML/CSS - каркас и стили
- React 18 — основной фреймворк
- React Router — навигация
- Axios — HTTP-клиент
- Yandex Maps API — интеграция карт
- Docker + Docker Compose — контейнеризация
- Nginx — reverse proxy и статика
- RabbitMQ — брокер сообщений между сервисами
- Git — контроль версий
- 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-уведомления на каждом этапе
- Интеграция с картами для отслеживания доставки
- История всех заказов с фильтрацией
- Онлайн оплата (YooKassa)
- Картой при получении
- Наличными курьеру
- Самовывоз из пунктов выдачи
- Курьерская доставка
- Интеграция с Яндекс Картами для указания адреса
- Автоматический расчет стоимости доставки
- JWT токены с refresh/access парами
- CORS политика с белым списком доменов
- Защита от CSRF и XSS атак
- Валидация входных данных на всех уровнях
- Безопасное хранение секретов в .env файлах
- Кэширование Redis для частых запросов
- Оптимизация запросов (select_related, prefetch_related)
- Пагинация для больших списков
- Lazy loading изображений
- Gzip сжатие через Nginx
- Статика через CDN (S3)
# 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После запуска проекта документация доступна по адресам:
- Swagger UI: http://localhost:8000/api/v1/swagger/
- ReDoc: http://localhost:8000/api/v1/redoc/
- DRF Browsable API: http://localhost:8000/api/v1/
-
🎯 Система рекомендаций
- Рекомендации на основе истории покупок
- Персонализированные скидки
- Накопление баллов
-
📊 Аналитика
- Панель администратора с графиками. Работа с Grafana
- CI/CD
- более подробная работа с логами
- A/B тестирование
-
🤖 Автоматизация
- Чат-бот для заказов
Здоровое питание — это не диета, это образ жизни. Good Greens помогает сделать его проще и вкуснее. 🥑