Skip to content

Z01coder/Flower-shop-service

Repository files navigation

Язык: English | Русский

Flower Shop Service

Сервис доставки цветов на Django с интеграцией Telegram бота

Содержание
  1. О проекте
  2. Начало работы
  3. Использование
  4. План развития
  5. Вклад в проект
  6. Лицензия
  7. Контакты
  8. Благодарности

О проекте

Превью

Превью

Flower Shop Service - это веб-приложение на Django для сервиса доставки цветов "Цвет 25 весны". Проект предоставляет полный функционал интернет-магазина цветов с возможностью оформления заказов, управления корзиной, просмотра каталога товаров и интеграцией с Telegram ботом для уведомлений и аналитики.

Цели и задачи проекта

Цели:

  • Создать полнофункциональный интернет-магазин цветов с системой заказов
  • Реализовать удобный пользовательский интерфейс для выбора и оформления заказов
  • Интегрировать Telegram бота для уведомлений и аналитики
  • Обеспечить эффективное управление заказами и товарами через админ-панель

Ключевые задачи:

  • Разработать модели данных для товаров, заказов, пользователей и отзывов
  • Создать систему каталога товаров с детальными страницами
  • Реализовать корзину покупок и систему оформления заказов
  • Внедрить систему аутентификации и личный кабинет пользователя
  • Реализовать историю заказов с возможностью повторного заказа
  • Добавить систему отзывов и рейтингов для товаров
  • Интегрировать Telegram бота для уведомлений о заказах и аналитики
  • Создать административную панель для управления заказами и товарами
Результаты

Реализованная функциональность:

  • Регистрация и авторизация пользователей с кастомной моделью пользователя
  • Каталог товаров с детальными страницами для каждого букета
  • Корзина покупок с возможностью добавления и удаления товаров
  • Система оформления заказов с выбором даты и времени доставки
  • История заказов с возможностью повторного заказа
  • Система отзывов и рейтингов для товаров
  • Личный кабинет пользователя с редактированием профиля
  • Административная панель для управления заказами, товарами и пользователями
  • Аналитика по продажам для администратора
  • Telegram бот с уведомлениями о новых заказах и смене статуса
  • Команда /analytics в Telegram боте для получения ежедневной статистики

Созданные компоненты:

  • Django приложение flower_shop с моделями: CustomUser, Product, Order, OrderItem, Review, Report
  • HTML шаблоны для всех страниц приложения
  • Система сигналов для автоматической отправки уведомлений в Telegram
  • Кастомные команды управления для создания тестовых пользователей и товаров
  • Интеграция с python-telegram-bot для работы Telegram бота

(В начало)

Используемые технологии

Основные технологии и библиотеки, используемые в проекте:

  • Django
  • Python

Дополнительные зависимости:

  • python-telegram-bot==21.10 - для интеграции Telegram бота
  • pytest==8.3.4 и pytest-django==4.10.0 - для тестирования
  • pillow==11.1.0 - для работы с изображениями товаров
  • python-dotenv==1.0.0 - для управления настройками через переменные окружения
  • SQLite - база данных (по умолчанию)
  • Bootstrap - для современного адаптивного дизайна интерфейса

(В начало)

Начало работы

Инструкции по установке и запуску проекта локально.

Требования

Для работы с проектом необходимо установить:

  • Python 3.x
    # Проверьте версию Python
    python --version

Установка

Ниже приведены инструкции по установке и настройке приложения.

  1. Клонируйте репозиторий

    git clone https://github.com/your_username/repo_name.git
    cd Flower-shop-service
  2. Создайте виртуальное окружение (рекомендуется)

    python -m venv venv
    # Windows
    venv\Scripts\activate
    # Linux/Mac
    source venv/bin/activate
  3. Установите зависимости

    pip install -r requirements.txt
  4. Создайте файл .env в корне проекта и добавьте необходимые переменные окружения:

    SECRET_KEY=your-secret-key-here
    DEBUG=True
    ALLOWED_HOSTS=localhost,127.0.0.1
    TELEGRAM_BOT_TOKEN=your-telegram-bot-token
    TELEGRAM_ADMIN_CHAT_ID=your-telegram-chat-id
  5. Примените миграции

    python manage.py migrate
  6. Создайте тестовых пользователей

    python manage.py create_test_users

    По умолчанию создаются пользователи:

    • Админ: admin / admin123 (email: admin@example.com)
    • Пользователь: testuser / test123 (email: testuser@example.com)
  7. (Опционально) Создайте тестовые товары

    python manage.py create_test_products
  8. Запустите сервер разработки

    python manage.py runserver
  9. Откройте в браузере:

(В начало)

Использование

Приложение предоставляет следующие страницы и функциональность:

Основные страницы:

  1. Главная страница (/)

    • Приветственная страница с описанием сервиса
    • Доступна всем пользователям
  2. Каталог товаров (/catalog/)

    • Отображает все доступные букеты цветов
    • Доступна всем пользователям без авторизации
    • Показывает название, цену и изображение каждого товара
  3. Детальная страница товара (/catalog/<product_id>/)

    • Подробная информация о букете
    • Отображение всех отзывов и рейтингов
    • Возможность оставить отзыв (требуется авторизация)
    • Кнопка добавления товара в корзину
  4. Корзина (/cart/)

    • Просмотр товаров в корзине
    • Изменение количества товаров
    • Очистка корзины
    • Переход к оформлению заказа
  5. Оформление заказа (/create_order/)

    • Форма для оформления доставки
    • Выбор даты и времени доставки
    • Указание адреса доставки
    • Добавление комментария к заказу
    • Требуется авторизация
  6. История заказов (/order_history/)

    • Просмотр всех заказов пользователя
    • Детальная информация о каждом заказе
    • Возможность повторить заказ
    • Требуется авторизация
  7. Личный кабинет (/profile/)

    • Просмотр и редактирование профиля
    • Управление личными данными
    • Требуется авторизация
  8. Регистрация и вход (/register/, /login/)

    • Регистрация новых пользователей
    • Авторизация существующих пользователей
    • Восстановление пароля
  9. Аналитика (/analytics/)

    • Статистика по продажам
    • Отчёты о заказах и выручке
    • Доступна только суперпользователям
  10. Админ-панель (/admin/)

    • Стандартная Django админ-панель
    • Управление товарами, заказами, пользователями и отзывами
    • Изменение статусов заказов
    • Доступна только администраторам

Telegram бот:

  • Уведомления о заказах: автоматическая отправка уведомлений в Telegram при создании нового заказа
  • Уведомления о смене статуса: отправка сообщений при изменении статуса заказа
  • Команда /analytics: получение ежедневной статистики по заказам и выручке
  • Бот запускается автоматически при старте Django приложения

(В начало)

План развития

Показать пройденные этапы разработки

Выполненные этапы:

  • Этап 1: Базовая структура проекта

    • Создание Django проекта flower_shop
    • Настройка базовой структуры URL и маршрутизации
    • Настройка статических файлов и медиа
  • Этап 2: Модели данных

    • Разработка кастомной модели пользователя CustomUser с полями phone и address
    • Создание модели Product для товаров (букетов)
    • Разработка модели Order с выбором даты и времени доставки
    • Создание модели OrderItem для связи заказов с товарами
    • Разработка модели Review с системой рейтингов
    • Создание модели Report для аналитики продаж
    • Применение миграций базы данных
  • Этап 3: Система аутентификации и авторизации

    • Реализация регистрации новых пользователей
    • Реализация страницы входа и выхода
    • Настройка декораторов для защиты страниц, требующих авторизации
    • Реализация восстановления пароля
    • Настройка редиректов после входа/выхода
  • Этап 4: Каталог товаров

    • Реализация представления для отображения списка товаров
    • Создание детальной страницы товара с отображением информации
    • Создание HTML шаблонов для каталога
    • Интеграция работы с изображениями товаров
  • Этап 5: Корзина покупок

    • Реализация добавления товаров в корзину (сессия)
    • Создание страницы просмотра корзины
    • Реализация изменения количества товаров в корзине
    • Реализация очистки корзины
  • Этап 6: Система заказов

    • Создание формы OrderForm для оформления заказа
    • Реализация представления для обработки заказа
    • Создание HTML шаблона формы оформления заказа
    • Реализация выбора даты и времени доставки
    • Сохранение заказа в базу данных с товарами из корзины
  • Этап 7: История заказов

    • Реализация просмотра истории заказов пользователя
    • Отображение детальной информации о каждом заказе
    • Реализация функции повторного заказа
  • Этап 8: Система отзывов и рейтингов

    • Создание формы ReviewForm для добавления отзывов
    • Реализация возможности оставить отзыв на товар
    • Система рейтингов от 1 до 5 звёзд
    • Отображение всех отзывов на странице товара
  • Этап 9: Личный кабинет

    • Создание страницы личного кабинета
    • Реализация редактирования профиля пользователя
    • Создание формы ProfileEditForm для изменения данных
  • Этап 10: Административная панель

    • Настройка Django админ-панели для всех моделей
    • Добавление фильтров и поиска в админ-панели
    • Настройка отображения заказов с inline-редактированием товаров
    • Реализация изменения статусов заказов
  • Этап 11: Аналитика продаж

    • Реализация страницы аналитики для администраторов
    • Расчёт общей выручки и количества заказов
    • Создание отчётов по продажам
    • Отображение статистики в удобном формате
  • Этап 12: Интеграция Telegram бота

    • Интеграция библиотеки python-telegram-bot
    • Настройка автоматического запуска бота при старте приложения
    • Реализация отправки уведомлений о новых заказах
    • Реализация уведомлений о смене статуса заказа
    • Создание команды /analytics для получения статистики
    • Настройка отправки фотографий товаров в уведомлениях
  • Этап 13: Система сигналов

    • Реализация сигналов для автоматической отправки уведомлений
    • Настройка обработки событий создания и обновления заказов
    • Интеграция сигналов с Telegram ботом
  • Этап 14: Кастомные команды управления

    • Создание команды create_test_users для создания тестовых пользователей
    • Создание команды create_test_products для создания тестовых товаров
    • Реализация загрузки изображений для товаров
  • Этап 15: Улучшение пользовательского интерфейса

    • Интеграция Bootstrap для современного дизайна
    • Создание адаптивной навигационной панели
    • Улучшение форм с CSS-классами Bootstrap
    • Отображение статуса пользователя в навигации
    • Создание красивого дизайна главной страницы
  • Этап 16: Управление настройками через переменные окружения

    • Интеграция библиотеки python-dotenv
    • Вынос секретных ключей в переменные окружения
    • Настройка SECRET_KEY, DEBUG, ALLOWED_HOSTS через .env
    • Настройка токенов Telegram бота через переменные окружения

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

  • Добавление пагинации для каталога товаров
  • Реализация полнотекстового поиска по товарам
  • Добавление фильтрации товаров по категориям и цене
  • Реализация системы скидок и промокодов
  • Добавление возможности редактирования и удаления отзывов
  • Реализация системы избранных товаров
  • Добавление уведомлений на email при изменении статуса заказа
  • Реализация интеграции с платёжными системами
  • Добавление системы уведомлений в личном кабинете
  • Реализация API endpoints (REST API) для мобильного приложения
  • Добавление системы управления категориями товаров
  • Реализация экспорта отчётов в Excel/PDF
  • Написание unit-тестов и интеграционных тестов
  • Настройка CI/CD pipeline
  • Оптимизация производительности и кэширование
  • Добавление многоязычности интерфейса

(В начало)

Вклад в проект

Вклады делают сообщество открытого исходного кода таким удивительным местом для обучения, вдохновения и творчества. Любые ваши вклады будут высоко оценены.

Если у вас есть предложения по улучшению, пожалуйста, создайте fork репозитория и отправьте pull request. Вы также можете просто открыть задачу с тегом «enhancement». Не забудьте поставить проекту звездочку! Еще раз спасибо!

  1. Создать fork проекта
  2. Создайте ветку для вашей функции (git checkout -b feature/AmazingFeature)
  3. Зафиксируйте изменения (git commit -m 'Add some AmazingFeature')
  4. Отправьте изменения в ветку (git push origin feature/AmazingFeature)
  5. Создайте Pull Request

(В начало)

Лицензия

Распространяется по лицензии MIT. Дополнительную информацию см. в файле LICENSE.

(В начало)

Контакты

  • GitHub
  • Gmail
  • Telegram

(В начало)

Благодарности

Выражаю искреннюю благодарность университету Zerocoder и всей его команде за создание вдохновляющей и профессиональной образовательной среды. За подготовку "IT-астронавтов" на "космодроме" Зерокодер.

Особая благодарность:

Кириллу Пшиннику, директору университета, за вдохновение на подвиг;

Преподавателям Нине Стефанцовой, Максиму Вершинину и Дарье Бобровской — за глубокие знания, терпение и готовность всегда помочь;

Никите Муркину, куратору курса, за чёткую организацию и наставничество;

Елизавете, менеджеру, за заботу, оперативность и неизменную доброжелательность.

Благодаря вам этот проект стал возможен!

(В начало)

About

Project of a website-store for the sale and delivery of flower bouquets

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published