A modular, high performance, headless e-commerce platform built with Python, GraphQL, Django, and React.

Overview

Saleor Commerce - A GraphQL-first platform for perfectionists

Saleor Commerce

Customer-centric e-commerce on a modern stack
A headless, GraphQL commerce platform delivering ultra-fast, dynamic, personalized shopping experiences. Beautiful online stores, anywhere, on any device.

Join our active, engaged community:
Website | Blog | Twitter | GitHub Discussions

Table of Contents

What makes Saleor special?

Saleor is a rapidly-growing open source e-commerce platform that has served high-volume companies from branches like publishing and apparel since 2012. Based on Python and Django, the latest major update introduces a modular front end powered by a GraphQL API and written with React and TypeScript.

Features

  • PWA: End users can shop offline for better sales and shopping experiences
  • GraphQL API: Access all data from any web or mobile client using the latest technology
  • Headless commerce: Build mobile apps, customize storefronts and externalize processes
  • UX and UI: Designed for a user experience that rivals even the top commercial platforms
  • Dashboard: Administrators have total control of users, processes, and products
  • Orders: A comprehensive system for orders, dispatch, and refunds
  • Cart: Advanced payment and tax options, with full control over discounts and promotions
  • Payments: Flexible API architecture allows integration of any payment method. It comes with Braintree support out of the box.
  • Geo-adaptive: Automatic localized pricing. Over 20 local languages. Localized checkout experience by country.
  • SEO: Packed with features that get stores to a wider audience
  • Cloud: Optimized for deployments using Docker
  • Analytics: Server-side Google Analytics to report e-commerce metrics without affecting privacy

Saleor is free and always will be. Help us out… If you love free stuff and great software, give us a star! 🌟

Saleor Storefront - React-based PWA e-commerce storefront Saleor Dashboard - Modern UI for managing your e-commerce

Installation

See the Saleor docs for step-by-step installation and deployment instructions.

Note: The main branch is the development version of Saleor and it may be unstable. To use the latest stable version, download it from the Releases page or switch to a release tag.

The current production-ready version is 3.0 (beta) and you should use this version for all three components:

Documentation

Saleor documentation is available here: docs.saleor.io

To contribute, please see the saleor/saleor-docs repository.

Saleor Platform

The easiest way to run all components of Saleor (API, storefront and dashboard) together on your local machine is to use the saleor-platform project. Go to that repository for instructions on how to use it.

View saleor-platform

Storefront

For PWA, single-page storefront go to the saleor-storefront repository.

View storefront demo

Dashboard

For dashboard go to the saleor-dashboard repository.

View dashboard demo

Demo

Want to see Saleor in action?

View Storefront | View Dashboard (admin area)

Or launch the demo on a free Heroku instance.

Deploy

Login credentials: [email protected]/admin

Contributing

We love your contributions and do our best to provide you with mentorship and support. If you are looking for an issue to tackle, take a look at issues labeled Help Wanted.

If nothing grabs your attention, check our roadmap or come up with your feature. Just drop us a line or open an issue and we’ll work out how to handle it.

Get more details in our Contributing Guide.

Your feedback

Do you use Saleor as an e-commerce platform? Fill out this short survey and help us grow. It will take just a minute, but mean a lot!

Take a survey

License

Disclaimer: Everything you see here is open and free to use as long as you comply with the license. There are no hidden charges. We promise to do our best to fix bugs and improve the code.

Some situations do call for extra code; we can cover exotic use cases or build you a custom e-commerce appliance.

Crafted with ❤️ by Saleor Commerce

[email protected]

Comments
  • Multi-vendor support

    Multi-vendor support

    Hello , I am very happy to say you that, saleor is very good option for small stores. but i want some more features like multi vendor, multi sellers in single site. multiple sellers can sell the products in one site, As amazon, ebay. Please try to develop these features in simple way, and easily anyone can understand.

    Thank you..

    opened by iamsushanth 68
  • Fast pagination without OFFSET, skip counting rows unless requested

    Fast pagination without OFFSET, skip counting rows unless requested

    Proof of concept implementation that limits the cost of paginated connections unless totalCount is explicitly requested.

    ⚠️ WARNING

    • Not fully tested.
    • Not sure if it's used by all connection classes.
    • I likely don't have the time necessary to bring this into a mergeable state.

    Fixes #4652 Fixes #2377

    Pull Request Checklist

    1. [ ] Privileged views and APIs are guarded by proper permission checks.
    2. [ ] All visible strings are translated with proper context.
    3. [ ] All data-formatting is locale-aware (dates, numbers, and so on).
    4. [ ] Database queries are optimized and the number of queries is constant.
    5. [ ] Database migration files are up to date.
    6. [ ] The changes are tested.
    7. [ ] GraphQL schema and type definitions are up to date.
    8. [ ] Changes are mentioned in the changelog.
    performance 
    opened by patrys 63
  • Additional Cloud Deployment Options

    Additional Cloud Deployment Options

    Is it possible to add guides for deployment on alternative cloud services?

    I really like Heroku but I have an issue with how pricey it is to have SSL with a custom domain. Ideally, I would also like to host my Saleor instance on a different cloud provider, say Digital Ocean or Google Cloud Compute.

    Does anyone have a written guide for alternative cloud deployments?

    This is only a request. Thank you.

    stale 
    opened by raybesiga 52
  • from prices import Price

    from prices import Price

    I am getting this error: ImportError cart: No module named prices

    I found the source of the error: from prices import Price

    this line is found on the following files: https://github.com/mirumee/saleor/blob/25adc3c8e840c81418833290a89e240baf7833e1/saleor/product/models/discounts.py https://github.com/mirumee/saleor/blob/fcf982842c2ad9f9795efe4b11d9dc3f9a251fba/saleor/product/models/variants.py https://github.com/mirumee/saleor/blob/214138810c1722f1b61e01c115eeecb362f93fb9/saleor/cart/init.py https://github.com/mirumee/saleor/blob/25adc3c8e840c81418833290a89e240baf7833e1/saleor/order/models.py

    and I see that I cannot find this module anywhere as I did do a search. This is preventing me from syncing to the DB and getting this running successfully.

    Let me know what is missing as I am still searching.

    opened by infinityalgorithms 41
  • migration failed due to importError

    migration failed due to importError

    Hi,

    I am trying to install saleor on my local machine. I followed the instructions carefully here http://saleor.readthedocs.io/en/latest/installation.html#installation. I even have a virtual environment as recommended by the Docs.

    However, I cannot seem to have it up and running. I am using python 2.7, Django 1.10, pip 9.0.1. The first time I ran a migration, I go this error

    ImportError: No module named dj_database_url. I proceeded to install it and other several modules that appeared as an import error when I tried to migrate but could not. I finally reached this module dj_cache_url but I get this error when i try to install it via pip

    Could not find a version that satisfies the requirement dj_cache_url (from versions: ) No matching distribution found for dj_cache_url

    Now I cannot pass the migration stage because this module has an issue. What could be the problem?

    opened by HawiCaesar 40
  • Draft: Avalara excise plugin

    Draft: Avalara excise plugin

    Add Avalara Avatax Excise (ATE) Plugin. ATE is an Avalara product that is effectively a wrapper around Avatax with some additional fields and logic.

    Interesting things

    • ATE REST API Docs
    • ATE architecturally is a wrapper about Avatax. However it uses none of the same conventions between ATE and Avatax REST API's even though many of the fields are the same. For example ATE uses CaseLikeThis. This makes it almost but never quite like Avatax.
    • ATE returns currency only on Tax Lines and not at the Transaction level. We assume the first line currency is the one to use.
    • Some day we could consider refactoring Avatax and possibly writing it's init file with classes so that Excise can better extend it. ATE would then only need to override a few functions.

    Limitations / work in progress

    • ATE ProductCode is being mapped to Saleor's SKU. However ATE ProductCode has a very small max character length of 10
    • Commit is not available yet due to limitations on ATE. A second PR will be submitted for this later once Avalara addresses this.
    • Public documentation coming soon (Shared our internal docs with you already)

    Using this plugin

    ATE is a very new and enterprise focused product. Our design philosophy was to avoid any of our specific client business logic. However in practice, ATE must be integrated for each client. There's a lot of set up that happens on the ATE side such as mapping API custom fields, setting up SKUs etc. This plugin is not plug and play. However any changes necessary should include only adding additional ATE features and working with an ATE contact to set up.

    Impact

    • [ ] New migrations
    • [ ] New/Updated API fields or mutations
    • [ ] Deprecated API fields or mutations
    • [ ] Removed API types, fields, or mutations
    • [ ] Documentation needs to be updated

    Pull Request Checklist

    • [ ] Privileged queries and mutations are guarded by proper permission checks
    • [ ] Database queries are optimized and the number of queries is constant
    • [ ] Database migration files are up to date
    • [ ] The changes are tested
    • [ ] GraphQL schema and type definitions are up to date
    • [ ] Changes are mentioned in the changelog
    opened by bufke 34
  • relation

    relation "account_user" does not exist

    I'm not sure why this error is thrown. I can't find any account_user relation.

    What I'm trying to achieve

    To install the master branch ...

    Steps to reproduce the problem

    as provided by the documentation

    (Please include a stack trace if this problem results in a crash.) ubuntu@ip-172-31-17-237:~/saleor$ python3 manage.py migrate /usr/local/lib/python3.4/dist-packages/psycopg2/init.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use "pip install psycopg2-binary" instead. For details see: <http://initd.org/psyc opg/docs/install.html#binary-install-from-pypi>. """) System check identified some issues:

    WARNINGS: saleor.W001: Session caching cannot work with locmem backend HINT: User sessions need to be globally shared, use a cache server like Redis. Operations to perform: Apply all migrations: auth, contenttypes, django_celery_results, django_prices_openexchangerates, impersonate, sessions, sites, soci al_django Running migrations: Applying impersonate.0001_initial...Traceback (most recent call last): File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py", line 85, in _execute return self.cursor.execute(sql, params) psycopg2.ProgrammingError: relation "account_user" does not exist

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "manage.py", line 10, in execute_from_command_line(sys.argv) File "/usr/local/lib/python3.4/dist-packages/django/core/management/init.py", line 371, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.4/dist-packages/django/core/management/init.py", line 365, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python3.4/dist-packages/django/core/management/base.py", line 288, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/python3.4/dist-packages/django/core/management/base.py", line 335, in execute output = self.handle(*args, **options) File "/usr/local/lib/python3.4/dist-packages/django/core/management/commands/migrate.py", line 200, in handle fake_initial=fake_initial, File "/usr/local/lib/python3.4/dist-packages/django/db/migrations/executor.py", line 117, in migrate state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial) File "/usr/local/lib/python3.4/dist-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) File "/usr/local/lib/python3.4/dist-packages/django/db/migrations/executor.py", line 244, in apply_migration state = migration.apply(state, schema_editor) File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/schema.py", line 90, in exit self.execute(sql) File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/schema.py", line 117, in execute File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/schema.py", line 117, in execute cursor.execute(sql, params) File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py", line 100, in execute return super().execute(sql, params) File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py", line 68, in execute return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers return executor(sql, params, many, context) File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py", line 85, in _execute return self.cursor.execute(sql, params) File "/usr/local/lib/python3.4/dist-packages/django/db/utils.py", line 89, in exit raise dj_exc_value.with_traceback(traceback) from exc_value File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py", line 85, in _execute return self.cursor.execute(sql, params) django.db.utils.ProgrammingError: relation "account_user" does not exist

    opened by hassanzadeh 34
  • Deploying saleor aws beanstalk failed

    Deploying saleor aws beanstalk failed

    I've been trying for several days now to set up saleor under Amazon Web Services' Elastic Beanstalk. I am getting the following error most of the time:

    ERROR: Your requirements.txt is invalid. Snapshot your logs for details.

    Here's directory structure:

    ├── .ebextensions
    │   └── django.config
    ├── .elasticbeanstalk
    │   ├── config.yml
    ├── .git
    ├── .gitignore
    ├── manage.py
    ├── saleor
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    └── requirements.txt
    

    Here is django.config file inside .ebextensions:

    option_settings:

    aws:elasticbeanstalk:container:python:
       WSGIPath: saleor/wsgi.py
    packages:
     yum:
       gcc: []
       python36-devel: []
       gcc-c++: []
       libffi-devel: []
       postgresql93-devel: []
    

    Error:

    -------------------------------------
    /var/log/eb-activity.log
    -------------------------------------
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 47, in _execfile
              exec(code, globals, locals)
            File "/tmp/easy_install-q1ck81sr/cffi-1.11.5/setup.py", line 240, in <module>
            File "/usr/lib64/python3.6/distutils/core.py", line 163, in setup
              raise SystemExit("error: " + str(msg))
          SystemExit: error: command 'gcc' failed with exit status 1
    
          During handling of the above exception, another exception occurred:
    
          Traceback (most recent call last):
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 1101, in run_setup
              run_setup(setup_script, args)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 251, in run_setup
              raise
            File "/usr/lib64/python3.6/contextlib.py", line 99, in __exit__
              self.gen.throw(type, value, traceback)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 198, in setup_context
              yield
            File "/usr/lib64/python3.6/contextlib.py", line 99, in __exit__
              self.gen.throw(type, value, traceback)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 169, in save_modules
              saved_exc.resume()
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 144, in resume
              six.reraise(type, exc, self._tb)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/pkg_resources/_vendor/six.py", line 685, in reraise
              raise value.with_traceback(tb)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 157, in save_modules
              yield saved
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 198, in setup_context
              yield
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 248, in run_setup
              DirectorySandbox(setup_dir).run(runner)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 278, in run
              return func()
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 246, in runner
              _execfile(setup_script, ns)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 47, in _execfile
              exec(code, globals, locals)
            File "/tmp/easy_install-q1ck81sr/cffi-1.11.5/setup.py", line 240, in <module>
            File "/usr/lib64/python3.6/distutils/core.py", line 163, in setup
              raise SystemExit("error: " + str(msg))
          SystemExit: error: command 'gcc' failed with exit status 1
    
          During handling of the above exception, another exception occurred:
    
          Traceback (most recent call last):
            File "<string>", line 1, in <module>
            File "/tmp/pip-build-y4onvdfc/cairocffi/setup.py", line 51, in <module>
              'test': ['pytest-runner', 'pytest-cov'],
            File "/usr/lib64/python3.6/distutils/core.py", line 108, in setup
              _setup_distribution = dist = klass(attrs)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/dist.py", line 315, in __init__
              self.fetch_build_eggs(attrs['setup_requires'])
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/dist.py", line 361, in fetch_build_eggs
              replace_conflicting=True,
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 850, in resolve
              dist = best[req.key] = env.best_match(req, ws, installer)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1122, in best_match
              return self.obtain(req, installer)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1134, in obtain
              return installer(requirement)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/dist.py", line 429, in fetch_build_egg
              return cmd.easy_install(req)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 665, in easy_install
              return self.install_item(spec, dist.location, tmpdir, deps)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 695, in install_item
              dists = self.install_eggs(spec, download, tmpdir)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 876, in install_eggs
              return self.build_and_install(setup_script, setup_base)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 1115, in build_and_install
              self.run_setup(setup_script, setup_base, args)
            File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 1103, in run_setup
              raise DistutilsError("Setup script exited with %s" % (v.args[0],))
          distutils.errors.DistutilsError: Setup script exited with error: command 'gcc' failed with exit status 1
    
    devops stale 
    opened by Jisanbd 33
  • [Docker] The SECRET_KEY setting must not be empty.

    [Docker] The SECRET_KEY setting must not be empty.

    What I'm trying to achieve

    Install and run Saleor on Docker in production

    Steps to reproduce the problem

    1. docker build -t mystorefront .
    2. docker run mystorefront:latest

    What I expected to happen

    Launch the store on port 8000

    Screenshots

    image

    System information Operating system: UBUNTU 18.04 Browser:

    General questions: What are the env variables that docker is using and how can I change them?

    opened by asennoussi 28
  • Lock checkoutComplete, create order from adyen notification

    Lock checkoutComplete, create order from adyen notification

    • refactor checkoutComplete mutation
    • extract whole checkoutComplete logic to separate file
    • use checkout_complete logic to create order from Adyen notification
    • apply lock for handling the adyen notifciation and mutation checkoutComplete
    opened by korycins 26
  • npm run build-assets don't work

    npm run build-assets don't work

    npm run build-assets

    missing script: build-assets did you mean;

    build-schema build-mails

    and when i typing python manage.py runserver only show me

    http://127.0.0.1:8000/graphql/

    what happen?

    opened by valentinc94 26
  • Add new graphql `@stream` and `@defer` support to the saleor graphql server

    Add new graphql `@stream` and `@defer` support to the saleor graphql server

    What I'm trying to achieve

    Split up big queries like the ones for a product overview page with 100 items into many smaller sub queries that load data async.

    Describe a proposed solution

    Add new graphql @stream and @defer support to the saleor graphql server

    Other solutions I've tried and won't work

    Split up into individual queries would work but would increase the amount of work on the client tremendously.

    opened by tilman 0
  • Fix incorrect payment captured amount for Adyen

    Fix incorrect payment captured amount for Adyen

    I want to merge this change because it solves the issue described here: https://github.com/saleor/saleor/issues/11649

    Impact

    • [ ] New migrations
    • [ ] New/Updated API fields or mutations
    • [ ] Deprecated API fields or mutations
    • [ ] Removed API types, fields, or mutations
    • [ ] Documentation needs to be updated

    Pull Request Checklist

    • [ ] Privileged queries and mutations are guarded by proper permission checks
    • [ ] Database queries are optimized and the number of queries is constant
    • [ ] Database migration files are up to date
    • [ ] The changes are tested
    • [ ] GraphQL schema and type definitions are up to date
    • [ ] Changes are mentioned in the changelog
    opened by korycins 1
  • Bug: Adyen - incorrect balance of the payment

    Bug: Adyen - incorrect balance of the payment

    What are you trying to achieve?

    Order with two payments, where only one is active can show incorrect value as an outstanding balance. Order creation can cause an exception that products are out of stock. Because of this, we can have a payment fully paid, but without an order. Saleor will immediately refund the funds, but if Saleor receive the authorization notification for not active payment it will create a new transaction for it, and increase the payment.captured_amount

    Steps to reproduce the problem

    Reproducing is hard without touching the code.

    • Saleor needs to capture the funds for the checkout
    • it needs to raise an exception that the products are out of stock, and we cant create the order.
    • The out of stock exception will trigger the refund.
    • The notification from Adyen, about authorization, should not increase the amount of payment.captured_amount
    • After receiving Authorize + refund notification, the payment.capture_amount should be 0

    What did you expect to happen?

    Payment.captured_amount should be 0

    Logs

    No response

    Environment

    Saleor version: 3.1.38 OS and version: …

    bug triage 
    opened by korycins 0
  • Fix Adyen authorize notification handler that raises unhandled exception

    Fix Adyen authorize notification handler that raises unhandled exception

    I want to merge this change because it fixes an authorize-handler that was crashing when Saleor tried to create the order but it failed after processing the payment due to missing stock. Currently, we assume that we shouldn't try to create the order if we already stored the transaction with the same pspReference as the one from the notification.

    It covers https://github.com/saleor/saleor/issues/11644

    Impact

    • [ ] New migrations
    • [ ] New/Updated API fields or mutations
    • [ ] Deprecated API fields or mutations
    • [ ] Removed API types, fields, or mutations
    • [ ] Documentation needs to be updated

    Pull Request Checklist

    • [ ] Privileged queries and mutations are guarded by proper permission checks
    • [ ] Database queries are optimized and the number of queries is constant
    • [ ] Database migration files are up to date
    • [ ] The changes are tested
    • [ ] GraphQL schema and type definitions are up to date
    • [ ] Changes are mentioned in the changelog
    opened by korycins 2
  • Option to complete custom form upon choosing a product

    Option to complete custom form upon choosing a product

    What I'm trying to achieve

    I want to allow a customer to provide inputs to the digital product they select, fields which conditionally cause next fields to show/hide, allow file upload, file download based on options.

    Describe a proposed solution

    Order should contain bundles of inputs, per customized product (downloadable). So that potentially an asset created, based on corresponding inputs, can be sent back to the user in fulfillment of the order.

    Other solutions I've tried and won't work

    It is potentially possible to extend using a plugin. If so I will attempt and link here. Otherwise can't think of any other option.

    Screenshots or mockups

    Demo of similar feature in shopify https://www.variantoptionproductoption.com/collections/examples/products/custom-jersey

    opened by dnk8n 0
  • Prepare for moving orderSettings to Channel

    Prepare for moving orderSettings to Channel

    Preparation to merge https://github.com/saleor/saleor/pull/11417

    Issue: https://github.com/saleor/saleor/issues/11337

    Impact

    • [ ] New migrations
    • [ ] New/Updated API fields or mutations
    • [ ] Deprecated API fields or mutations
    • [ ] Removed API types, fields, or mutations
    • [ ] Documentation needs to be updated

    Pull Request Checklist

    • [ ] Privileged queries and mutations are guarded by proper permission checks
    • [ ] Database queries are optimized and the number of queries is constant
    • [ ] Database migration files are up to date
    • [ ] The changes are tested
    • [ ] GraphQL schema and type definitions are up to date
    • [ ] Changes are mentioned in the changelog
    opened by kadewu 1
Releases(3.9.12)
  • 3.9.12(Jan 5, 2023)

  • 3.9.11(Jan 4, 2023)

  • 3.9.9(Jan 2, 2023)

    What's Changed

    • Add missing DB index for account private metadata by @tomaszszymanski129 in https://github.com/saleor/saleor/pull/11583
    • Bump pillow to 9.4.0 by @NyanKiyoshi in https://github.com/saleor/saleor/pull/11620

    Full Changelog: https://github.com/saleor/saleor/compare/3.9.8...3.9.9

    Source code(tar.gz)
    Source code(zip)
  • 3.8.23(Jan 2, 2023)

    What's Changed

    • Add missing DB index for account private metadata by @tomaszszymanski129 in https://github.com/saleor/saleor/pull/11582
    • Bump pillow to 9.4.0 by @NyanKiyoshi in https://github.com/saleor/saleor/pull/11619

    Full Changelog: https://github.com/saleor/saleor/compare/3.8.22...3.8.23

    Source code(tar.gz)
    Source code(zip)
  • 3.7.52(Jan 2, 2023)

    What's Changed

    • Add missing DB index for account private metadata by @tomaszszymanski129 in https://github.com/saleor/saleor/pull/11581
    • Bump pillow to 9.4.0 by @NyanKiyoshi in https://github.com/saleor/saleor/pull/11618

    Full Changelog: https://github.com/saleor/saleor/compare/3.7.51...3.7.52

    Source code(tar.gz)
    Source code(zip)
  • 3.6.46(Jan 2, 2023)

    What's Changed

    • Add missing DB index for account private metadata by @tomaszszymanski129 in https://github.com/saleor/saleor/pull/11580
    • Bump pillow to 9.4.0 by @NyanKiyoshi in https://github.com/saleor/saleor/pull/11617

    Full Changelog: https://github.com/saleor/saleor/compare/3.6.45...3.6.46

    Source code(tar.gz)
    Source code(zip)
  • 3.5.48(Jan 2, 2023)

    What's Changed

    • Add missing DB index for account private metadata by @tomaszszymanski129 in https://github.com/saleor/saleor/pull/11579
    • Bump pillow to 9.4.0 by @NyanKiyoshi in https://github.com/saleor/saleor/pull/11616

    Full Changelog: https://github.com/saleor/saleor/compare/3.5.47...3.5.48

    Source code(tar.gz)
    Source code(zip)
  • 3.4.45(Jan 2, 2023)

    What's Changed

    • Add missing DB index for account private metadata by @tomaszszymanski129 in https://github.com/saleor/saleor/pull/11578
    • Bump pillow to 9.4.0 by @NyanKiyoshi in https://github.com/saleor/saleor/pull/11615

    Full Changelog: https://github.com/saleor/saleor/compare/3.4.44...3.4.45

    Source code(tar.gz)
    Source code(zip)
  • 3.3.45(Jan 2, 2023)

    What's Changed

    • Add missing DB index for account private metadata by @tomaszszymanski129 in https://github.com/saleor/saleor/pull/11577
    • Bump pillow to 9.4.0 by @NyanKiyoshi in https://github.com/saleor/saleor/pull/11614

    Full Changelog: https://github.com/saleor/saleor/compare/3.3.44...3.3.45

    Source code(tar.gz)
    Source code(zip)
  • 3.2.31(Jan 2, 2023)

    What's Changed

    • Add missing DB index for account private metadata by @tomaszszymanski129 in https://github.com/saleor/saleor/pull/11576
    • Bump pillow to 9.4.0 by @NyanKiyoshi in https://github.com/saleor/saleor/pull/11613

    Full Changelog: https://github.com/saleor/saleor/compare/3.2.30...3.2.31

    Source code(tar.gz)
    Source code(zip)
  • 3.1.41(Jan 2, 2023)

    What's Changed

    • Bump pillow to 9.4.0 by @NyanKiyoshi in https://github.com/saleor/saleor/pull/11612

    Full Changelog: https://github.com/saleor/saleor/compare/3.1.40...3.1.41

    Source code(tar.gz)
    Source code(zip)
  • 3.9.8(Dec 30, 2022)

  • 3.8.22(Dec 30, 2022)

  • 3.7.51(Dec 30, 2022)

  • 3.6.45(Dec 30, 2022)

  • 3.5.47(Dec 30, 2022)

    Use replicas to fetch discount info (https://github.com/saleor/saleor/pull/11599) by @fowczarek Fix Avalara calculation on digital orders (https://github.com/saleor/saleor/pull/11593) by @fowczarek

    Source code(tar.gz)
    Source code(zip)
  • 3.4.44(Dec 30, 2022)

    Use replicas to fetch discount info (https://github.com/saleor/saleor/pull/11600) by @fowczarek Fix Avalara calculation on digital orders (https://github.com/saleor/saleor/pull/11591) by @fowczarek

    Source code(tar.gz)
    Source code(zip)
  • 3.3.44(Dec 30, 2022)

    Use replicas to fetch discount info (https://github.com/saleor/saleor/pull/11601 ) by @fowczarek Fix Avalara calculation on digital orders (https://github.com/saleor/saleor/pull/11590) by @fowczarek

    Source code(tar.gz)
    Source code(zip)
  • 3.2.30(Dec 30, 2022)

  • 3.1.40(Dec 30, 2022)

  • 3.1.39(Dec 28, 2022)

  • 3.9.7(Dec 21, 2022)

  • 3.9.6(Dec 21, 2022)

    • Fix double avatax requests for created order (#11535) (1e764f49cb)
    • Add ability to set a custom Celery queue for async webhook (#11526) (095a755e98)
    • Fix invalid default values for decimal fields (#11486) (01013dcb19)
    Source code(tar.gz)
    Source code(zip)
  • 3.8.21(Dec 21, 2022)

  • 3.8.20(Dec 21, 2022)

    • Fix double avatax requests for created order (#11536) (2e383ea267)
    • Add ability to set a custom Celery queue for async webhook (#11525) (90b51fce60)
    • Fix invalid default values for decimal fields (#11485) (fdd5f73dd3)
    Source code(tar.gz)
    Source code(zip)
  • 3.7.50(Dec 21, 2022)

  • 3.6.44(Dec 21, 2022)

    • Fix double avatax requests for created order (#11538) (4831d9e773)
    • Add ability to set a custom Celery queue for async webhook (#11523) (873cd5086d)
    Source code(tar.gz)
    Source code(zip)
  • 3.5.46(Dec 21, 2022)

    • Fix double avatax requests for created order (#11539) (ce3a4b60d8)
    • Add ability to set a custom Celery queue for async webhook (#11522) (463a40c681)
    Source code(tar.gz)
    Source code(zip)
  • 3.4.43(Dec 21, 2022)

  • 3.3.43(Dec 21, 2022)

Owner
Saleor Commerce
The commerce API that puts developers first.
Saleor Commerce
Portfolio and E-commerce site built on Python-Django and Stripe checkout

StripeMe Introduction Stripe Me is an e-commerce and portfolio website offering communication services, including web-development, graphic design and

null 3 Jul 5, 2022
Storefront - An E-commerce StoreFront Application Built With Python

An E-commerce StoreFront Application A very robust storefront project. This is a

Fachii Felix Zasha 1 Apr 4, 2022
E-Commerce Platform

Shuup Shuup is an Open Source E-Commerce Platform based on Django and Python. https://shuup.com/ Copyright Copyright (c) 2012-2021 by Shuup Commerce I

Shuup 2k Dec 30, 2022
Domain-driven e-commerce for Django

Domain-driven e-commerce for Django Oscar is an e-commerce framework for Django designed for building domain-driven sites. It is structured such that

Oscar 5.6k Dec 30, 2022
A Django e-commerce website

BRIKKHO.com E-commerce website created with Django Run It: Clone the project or download as zip: $ git clone https://github.com/FahadulShadhin/brikkho

Shadhin 1 Dec 17, 2021
A web application to search for input products across several supermarkets' e-commerce to return price, detail of products running on Python.

Price Checker A web application to search for input products across several supermarkets' e-commerce to return price, detail of products. Requirements

null 3 Jun 28, 2022
An eBay-like e-commerce auction site that will allow users to post auction listings, place bids on listings, comment on those listings, and add listings to a watchlist.

e-commerce-auction-site This repository is my solution to Commerce project of CS50’s Web Programming with Python and JavaScript course by Harvard. ??

null 3 Sep 3, 2022
Re-write of floppshop e-commerce site

Floppshop V2 Python: 3.9.5 FastAPI: 0.68 Tortoise-orm: 0.17.8 pytest: 5.2 PostgreSQL: 13.4 Setup Srak jak nie wiesz jak Clone repository $ git clone

jakub-figat 3 Nov 30, 2022
imager is a modern ecommerce & social network platform that helps users to find the most matching products

imager is a modern ecommerce & social network platform that helps users to find the most matching products. Users can follow their favourite brands and to be aware of friends' actions. If you have selling products you can also enroll like a brand and sell your products without fee.

Sardor 1 Jan 11, 2022
Ecommerce app using Django, Rest API and ElasticSearch

e-commerce-app Ecommerce app using Django, Rest API, Docker and ElasticSearch Sort pipfile pipfile-sort Runserver with Werkzeug (django-extensions) .

Nhat Tai NGUYEN 1 Jan 31, 2022
A Django based shop system

django-SHOP Django-SHOP aims to be a the easy, fun and fast e-commerce counterpart to django-CMS. Here you can find the full documentation for django-

Awesto 2.9k Jan 2, 2023
A Django app to accept payments from various payment processors via Pluggable backends.

Django-Merchant Django-Merchant is a django application that enables you to use multiple payment processors from a single API. Gateways Following gate

Agiliq 997 Dec 24, 2022
Python money class with optional CLDR-backed locale-aware formatting and an extensible currency exchange solution.

Python Money Money class with optional CLDR-backed locale-aware formatting and an extensible currency exchange solution. This is version 1.4.0-dev. De

Carlos Palol 214 Dec 22, 2022
Fully functional ecommerce website with user and guest checkout capabilities and Paypal payment integration.

ecommerce_website Fully functional ecommerce website with user and guest checkout capabilities and Paypal payment integration. pip install django pyth

null 2 Jan 5, 2022
An Unofficial Alipay API for Python

An Unofficial Alipay API for Python Overview An Unofficial Alipay API for Python, It Contain these API: Generate direct payment url Generate partner t

Eric Lo 321 Dec 24, 2022
Currency Conversion in Python

CurrencyConversion connect to an API to do currency conversions, save as json text or screen output exchangeratesAPI.py -h Exchange Rates via 'api.cur

soup-works 1 Jan 29, 2022
Foreign exchange rates, Bitcoin price index and currency conversion using ratesapi.io

forex-python Forex Python is a Free Foreign exchange rates and currency conversion. Note: Install latest forex-python==1.1 to avoid RatesNotAvailableE

MicroPyramid 540 Jan 5, 2023
Display money format and its filthy currencies, for all money lovers out there.

Python Currencies Display money format and its filthy currencies, for all money lovers out there. Installation currencies is available on PyPi http://

Alireza Savand 64 Dec 28, 2022
PVE with tcaledger app for payments and simulation of payment requests

tcaledger PVE with tcaledger app for payments and simulation of payment requests. The purpose of this API is to empower users to accept cryptocurrenci

null 3 Jan 29, 2022