Git Product home page Git Product logo

saleor's Introduction

saleor-commerce-logo
Commerce that works with your language and stack
GraphQL native, API-only platform for scalable composable commerce.

Join our community:
Website | Twitter | GitHub Discussions | Discord

Table of Contents

What makes Saleor special?

  • Technology-agnostic - no monolithic plugin architecture or technology lock-in.

  • GraphQL only - Not afterthought API design or fragmentation across different styles of API.

  • Headless and API only - APIs are the only way to interact, configure, or extend the backend.

  • Open source - a single version of Saleor without feature fragmentation or commercial limitations.

  • Cloud native - battle tested on global brands.

  • Native-multichannel - Per channel control of pricing, currencies, stock, product, and more.

Why API-only Architecture?

Saleor's API-first extensibility provides powerful tools for developers to extend backend using webhooks, attributes, metadata, apps, subscription queries, API extensions, dashboard iframes.

Compared to traditional plugin architectures (monoliths) it provides the following benefits:

  • There is less downtime as apps are deployed independently.
  • Reliability and performance - custom logic is separated from the core.
  • Simplified upgrade paths - eliminates incompatibility conflicts between extensions.
  • Technology-agnostic - works with any technology, stack, or language.
  • Parallel development - easier to collaborate than with a monolithic core.
  • Simplified debugging - easier to narrow down bugs in independent services.
  • Scalability - extensions and apps can be scaled independently.

What are the tradeoffs?

If you are a single developer working with a small business that doesn't have high traffic or a critical need for 24/7 availability, using a service-oriented approach might feel more complex compared to the traditional WordPress or Magento approach that provides a language-specific framework, runtime, database schema, aspect-oriented programming, and other tools to a quick start.

However, if you deploy on a daily basis, reliability and uptime is critical, you need to collaborate with other developers, or you have non-trivial requirements you might be in the right place.

Features

  • Enterprise ready: Secure, scalable, and stable. Battle-tested by big brands
  • Dashboard: User-friendly, fast, and productive. (Decoupled project repo )
  • Global by design Multi-currency, multi-language, multi-warehouse, tutti multi!
  • CMS: Manage product or marketing content.
  • Product management: A rich content model for large and complex catalogs.
  • Orders: Flexible order model, split payments, multi-warehouse, returns, and more.
  • Customers: Order history and preferences.
  • Promotion engine: Sales, vouchers, cart rules, giftcards.
  • Payment orchestration: multi-gateway, extensible payment API, flexible flows.
  • Cart: Advanced payment and tax options, with full control over discounts and promotions.
  • Payments: Flexible API architecture allows integration of any payment method.
  • Translations: Fully translatable catalog.
  • SEO: Unlimited SEO freedom with headless architecture.
  • Apps: Extend dashboard via iframe with any web stack.

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.x and you should use this version for all three components:

Saleor Cloud

The fastest way to develop with Saleor is by using developer accounts in Saleor Cloud.

Register here or install our CLI tool:

npm i -g @saleor/cli

and run the following command:

saleor register

Bootstrap your first storefront with:

saleor storefront create --url {your-saleor-graphql-endpoint}

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

An open-source storefront example built with Next.js App Router, React.js, TypeScript, GraphQL, and Tailwind CSS.

React Storefront Repository

View Storefront Example

Dashboard

For the dashboard, go to the saleor-dashboard repository.

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 Good first issue

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.

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.

Crafted with ❤️ by Saleor Commerce

[email protected]

saleor's People

Contributors

akjanik avatar artursmet avatar benekex2 avatar bogdal avatar d-wysocki avatar dependabot-preview[bot] avatar dependabot[bot] avatar dominik-zeglen avatar fowczarek avatar ikarbowiak avatar jxltom avatar koradon avatar korycins avatar krzysztofwolski avatar kwaidan00 avatar maarcingebala avatar mad-anne avatar mateuszgrzyb avatar michaljelonek avatar mociepka avatar nyankiyoshi avatar oldpadavan avatar pacu2 avatar patrys avatar rafalp avatar salwator avatar szdrasiak avatar szewczykmira avatar tomaszszymanski129 avatar weronka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

saleor's Issues

Change `registration.views.confirm_email` to no longer rely on POST

GET with a valid token should be enough to log user in and set an unusable password. The optional POST should check that the password is indeed unusable and change it to a valid one.

Then get rid of the second form in the template and instead provide a “Not now” link next to the “Set password” button.

Product variant base

It would be nice to have a variant system for products. Not sure if it's already possible, but from what I saw, it seems a bit complicated. I'd assume it would have to extend the 'Ship' model, but other than that, I'm not sure which way I'd go about building that.

Improve protocol handling

Some views should be available only via https. In most cases, that is, e.g. during development on local host that is NOT the case.

Suggested solution:

  • view decorator that sets property "ssl expected"
  • middleware that resolves path and check for the property on found view, and possibly redirects with appropriate protocol

How do I use `Subtyped` models?

Hi,

Thanks for the repo. Please help me figure out how to use models inherited from Subtyped class. Any simple use case would be much appreciated.

No requirements.txt

No requirements.txt

ImportError: No module named payments.signals

How fix it?

Add images to products

We've tried to avoid it to make the store simpler but many people find this to be a disadvantage.

Better checkout

Currently we show a huge confusing form that allows you to both enter a new address and pick one from the list of existing ones.

Implement order handling automata

We need an order handler object that decides what checkout steps are needed, validates them and returns the first step that needs user interaction (the next step to proceed to).

New address flow

  • Remove User relation form Addresss model
  • add ContactBook model,
  • replace billing address fields by relation to Address.

Product price per user & shipping

I'd like to implement per user prices (or groups) in saleor. I'm not sure how I'd go about doing that. As a base, I'd probably attach a related table PricedItem that contains a reference to the user and a price field to my Product class. Then, I'm assuming I'd simply have to override the 'get_price_per_item' method of my Product class, so that it takes in consideration the currently logged in user. My problem is that I don't know how I could obtain the currently logged in user from within get_price_per_item and how I'd need to modify the codebase and templates to properly go about that.
Any suggestions ?

Watch big prices

When your order exceeds maximum price that django-payments can handle, you get python decimal's error.

We need to watch total price for order in saleor and disallow to exceed it.

Extend SubtypedQuerySet

When I use ForeignKey with the subtyped model I don't get suptyped classes in related_name query set.

User profile

Add simple user profile page with order list.

Provide better page titles

Currently they resemble breadcrumbs:

Lorem » Ipsum » Dolor » Sit

The problem with that is a short browser tab will only display the site's title so it would be impossible to tell two tabs apart. Ideally the favicon alone should be enough to recognize the site, we should make sure the title starts with the actual name of the page in question.

Order admin

Add simple order admin page with grouped items.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.