Fullstack приложение интернет магазина цветов (FastAPI + React)
- Двухфакторная авторизации, верификация почты, профиль пользователя
- Ограничитель запросов
- Каталог товаров
- Оплата товаров
- ИИ агент для помощи в выборе товара
Используеться ИИ модель gemeni и по этому стоит включить VPN чтобы не было 400 ошибки. API gemini нестабильно и часто выдаёт ошибку 503 (сервера перегружены)
FastAPI(HTTP фреймворк, роутинг)Pydantic(схемы валидации)Dishka(Внедрение зависимостей)PostgreSQL(БД)SQLalchemy(ORM для работы с БД)Alembic(Миграции БД)MinIO(S3 хранилище для храния фото товаров)Taskiq(Асинхронное выполнение задач)RabbitMQ(Брокер задач для Taskiq)Redis(Кеш для ограничителя запроов)Pytest(Тестирование приложения)Black(Форматирование кода)Flake8(Линтер кода)Isort(Сортировка импортов)
React
- Git
- Docker и Docker Compose
- Python 3.14+ (для локальной разработки)
- pip - менеджер пакетов Python (предустановлен)
git clone git@github.com:KnightCode1024/FlowerShop.git
cd FlowerShop# Перейти в папку бекенда
cd backend
# Создание папки для ключей
mkdir certs
# Переходим в папку для ключей
cd certs
# Генерация RSA приватного ключа
openssl genrsa -out jwt-private.pem 2048
# Генерация публичного ключа
openssl rsa -in jwt-private.pem -outform PEM -pubout -out jwt-public.pemСоздайте файл .env в дириктории backend.
Вам может понадобится секретный ключ, для этого есть скрипт secuirity.py в папке backend/srcripts/secuirity.py. Запустите скрипт для генерации секретного ключа.
cp .env.example .envПерейдите в .env и замените заглушки чувствительных данных на свои (api ключи, доступ к smtp серверу, настройки оплаты и т д). Возможен запуск приложения без некоторых чувствительных данных, но соттветственно будут ошибки при вызове модулей связаных работающих с этими данными
# Запуск и сборка
docker compose up --build -d
# docker-compose up --build -d для старой версии докера
# Запуск стидии тестирования
docker compose -f docker-compose.tests.yml -p flowers_tests up -d --buildДля создания пользователей через консоль используйте скрипт (доступны все роли):
# Переход в docker контейнер бекенда
docker-compose exec backend sh
# Интерактивный режим
python src/create_user.py
# Режим с аргументами
python src/create_user.py --email admin@example.com --username admin --role admin --password MySecurePass123!
# Показать справку
python src/create_user.py --helpcd backend
# Убедитесь, что установлены dev зависимости
pip install -r requirements/dev.txt
# Форматирование кода (black)
black src/
# Проверка стиля кода (flake8)
flake8 src/
# Сортировка импортов (isort)
isort src/
# Создание новой миграции (автоматически отформатируется)
alembic revision --autogenerate -m "Add feature"cd backend
# Убедитесь, что установлены test зависимости
pip install -r requirements/test.txt
# Запуск тестов
pytest- http://127.0.0.1:5173 -
фронтенд - http://127.0.0.1:8000/docs -
документация API - http://127.0.0.1:9001 -
Веб консоль S3 хранилища (MinIO)