[project] name = "fashionistar-backend" version = "0.1.0" description = "FASHIONISTAR AI E-Commerce Backend" requires-python = ">=3.12" dependencies = [ # Core "djangorestframework", "django-ninja", "adrf", # Config "django-environ", "environs", "python-decouple", # Database "psycopg[binary,pool]", "dj-database-url", "pgvector", "psutil", # Auth & Security "djangorestframework-simplejwt", "argon2-cffi", "PyJWT", "cryptography", "pycryptodome", "django-encrypted-model-fields", "django-ratelimit", "fido2", "google-auth", "google-auth-oauthlib", "google-auth-httplib2", "django-axes", "django-csp", # Cache & Redis "django-redis", "redis", "hiredis", # Tasks "celery", "flower", # Servers "uvicorn", "daphne", "gunicorn", "channels", "channels-redis", # CORS & Media "django-cors-headers", "whitenoise", "django-storages", "django-cloudinary-storage", "cloudinary", "pillow", # Communication "django-phonenumber-field[phonenumbers]", "phonenumbers", "twilio", "django-phone-verify", "django-anymail", "django-zoho-zeptomail", "email-validator", # Admin, Tools, Utils "drf-spectacular", "drf-yasg", "django-jazzmin", "django-import-export", "dj-control-room[all]", "django-admin-rangefilter", "openpyxl>=3.1.0", "drf-api-logger", "prometheus-client", "sentry-sdk[django]", "django-silk", "django-health-check", "django-structlog", "pydantic", "django-filter", "marshmallow", "tablib", "requests", "httpx", "aiohttp", "aiohttp-retry", "certifi", "charset-normalizer", "idna", "urllib3", "asgiref >= 3.8.1", "attrs", "click", "colorama", "humanize", "jsonschema", "packaging", "python-dateutil", "pytz", "PyYAML", "setuptools", "shortuuid", "six", "sqlparse", "typing-extensions", "tzdata", "uritemplate", "uuid6", "wrapt", "aiohappyeyeballs", "aiosignal", "async-timeout", "frozenlist", "multidict", "propcache", "yarl", # Make sure we keep the correct versions of django and django-celery-beat, order matters slightly: "django-celery-beat", "Django==6.0.3", "django-auditlog>=3.4.1", "ollama>=0.6.2", # ── AI / ML Orchestration Engine ───────────────────────────────────────── "langgraph>=0.2.28", "langchain>=0.3.0", "langchain-core>=0.3.0", "langchain-community>=0.3.0", "langchain-ollama>=0.2.0", # ── Measurement Engine (MediaPipe) ──────────────────────────────────────── "mediapipe>=0.10.14", "opencv-python-headless>=4.9.0", "numpy>=1.26.4", # ── Recommendation Engine (FashionSigLIP / FashionCLIP) ────────────────── "open-clip-torch>=2.26.1", "sentence-transformers>=3.0.0", # ── PyTorch CPU-only wheel ──────────────────────────────────────────────── "torch>=2.2.0", "torchvision>=0.17.0", # ── Celery results + extras ─────────────────────────────────────────────── "django-celery-results>=2.5.1", # ── OpenAI client ───────────────────────────────────────────────────────── "openai", # ── Extra observability ─────────────────────────────────────────────────── "structlog>=24.0", "nplusone", "django-debug-toolbar", # ── Provider utilities ──────────────────────────────────────────────────── "django-cryptography", "django-model-utils", # ── PDF / QR ────────────────────────────────────────────────────────────── "weasyprint", "fonttools", "qrcode[pil]>=7.4.2", # Server-side QR PNG generation (brand-coloured, ERROR_CORRECT_H) "stripe", "django-dbbackup>=5.3.0", ] [project.optional-dependencies] dev = [ "pytest", "pytest-django", "pytest-asyncio", "pytest-cov", "pytest-mock", "factory-boy", "ruff", "mypy", ] [dependency-groups] dev = [ "factory-boy>=3.3.3", "pytest>=9.0.2", "pytest-asyncio>=1.3.0", "pytest-cov>=7.0.0", "pytest-django>=4.12.0", "pytest-mock>=3.15.1", "pytest-timeout>=2.4.0", ]