Розробка інтернет-магазину на Saleor

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Розробка інтернет-магазину на Saleor
Складна
від 2 тижнів до 3 місяців
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Розробка інтернет-магазина на Saleor

Saleor — Python/Django e-commerce платформа з GraphQL API як єдиним інтерфейсом. Стек: Django 4.x + Graphene-Django, PostgreSQL, Celery + Redis. Архітектурно headless за замовчуванням: бекенд предоставляє GraphQL API, фронтенд будується окремо.

Архітектура

┌──────────────────────┐
│ Saleor Core (Django) │
├──────┬───────────────┤
│GraphQL API  │ Webhooks│
├──────┴───────────────┤
│ Channel System        │
├──────┬────────┬──────┤
│Products│Checkout│Orders│
├──────┴────────┴──────┤
│PostgreSQL│Redis│Celery│
└──────────────────────┘

Ключева концепція: Channel — кожен канал має власну валюту, країни, ціноутворення. Один товар доступний у кількох каналах з різними цінами.

Встановлення

git clone https://github.com/saleor/saleor.git
cd saleor

docker compose up -d

# Або ручна встановлення
python -m venv venv
pip install -r requirements.txt

# .env файл
SECRET_KEY=your-key
DATABASE_URL=postgresql://saleor:pass@localhost/saleor
CELERY_BROKER_URL=redis://localhost:6379/0

# Міграції
python manage.py migrate
python manage.py createsuperuser

GraphQL API

Вся комунікація фронтенда через GraphQL. Endpoint: /graphql/.

query ProductList($channel: String!, $first: Int!) {
  products(channel: $channel, first: $first) {
    edges {
      node {
        id name slug
        pricing { priceRange { start { gross { amount currency } } } }
        variants {
          id sku quantityAvailable(countryCode: RU)
          pricing { price { gross { amount } } }
        }
      }
    }
  }
}

Канали

mutation CreateChannel {
  channelCreate(input: {
    name: "Russia"
    slug: "ru"
    currencyCode: "RUB"
    defaultCountry: RU
    countries: [RU, BY, KZ]
  }) {
    channel { id slug name currencyCode }
  }
}

Webhooks

Ключові события: ORDER_CREATED, ORDER_PAID, ORDER_FULFILLED, PRODUCT_UPDATED, PAYMENT_GATEWAY_INITIALIZE_SESSION.

mutation CreateWebhook {
  webhookCreate(input: {
    name: "CRM Sync"
    targetUrl: "https://crm.example.com/orders"
    events: [ORDER_CREATED, ORDER_PAID]
  }) {
    webhook { id name }
  }
}

Кастомний платіжний провайдер

from django.http import JsonResponse
import hmac, hashlib

def saleor_webhook(request):
    signature = request.headers.get('Saleor-Signature', '')
    secret = b'webhook-secret'
    computed = hmac.new(secret, request.body, hashlib.sha256).hexdigest()

    if not hmac.compare_digest(signature, computed):
        return JsonResponse({'error': 'Invalid'}, status=400)

    event_type = request.headers.get('Saleor-Event')
    payload = json.loads(request.body)

    if event_type == 'ORDER_PAID':
        sync_order_to_crm.delay(payload['order']['id'])

    return JsonResponse({'status': 'ok'})

Настройки продуктивності

GRAPHQL_QUERY_MAX_COMPLEXITY = 50000
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": os.environ.get("REDIS_URL"),
    }
}

Терміни розробки

  • Базова настройка + Dashboard + Next.js Starter: 2–3 тижні
  • Повноцінний магазин 2–3 ринків, кастомні типи товарів: 5–8 тижнів
  • Enterprise мультиканальний з інтеграціями: 14–20 тижнів