Shopware 6 is an open source ecommerce platform based on a quite modern technology stack that is powered by Symfony and Vue.js.

Overview

Build Status Scrutinizer Code Quality Latest Stable Version Total Downloads License GitHub closed pull requests Slack Development Template

Shopware 6

Realize your ideas - fast and without friction.

Tweet

Shopware 6 is an open source ecommerce platform based on a quite modern technology stack that is powered by Symfony and Vue.js. It's the successor of the very successful ecommerce shopping cart Shopware 5 which has over 800,000 downloads. Shopware 6 is focused on an API-first approach, so it's quite easy to think in different sales channels and make ecommerce happen whereever you want it.

If you like Shopware 6, give us a star on Github ★

Table of contents

Take a glimpse

The Shopware 6 Storefront is based on Twig and Bootstrap. Two well known and easy to learn frameworks, making the creation of templates a breeze!

The Shopware 6 Administration is based on Vue.js and twig.js, making the creation of new modules fast and easy. Get started with the design documentation.

The Rulebuilder makes the implementation of business processes easy.


Designing content is fast and intuitive with the Shopping Experiences.


Technology

Shopware 6 provides Services through REST-APIs and rich user interfaces to customers and administrators alike.

The core architecture

The chart shows how the Shopware Platform fits into your enterprise. It provides web frontends for management and for commerce through a multitude of sales channels. It comes with a set of user facing interfaces and provides the ability to connect to your own infrastructure and outside services through REST-APIs.

More information can be found in the documentation.

Shopware 6 repository structure

Shopware 6 consists of multiple repositories, two of them are important to you:

  • shopware/platform is a mono repository
    • This is where the shopware core is developed. You need it as dependency in your projects
    • This is where you can participate in the development of Shopware through pull requests
    • It's split into multiple repositories for production setups, all read-only
  • shopware/development is the development template
    • This is where your journey with shopware starts
    • Installation see below!

Quickstart / Installation

A full installation guide covering different dev environments is available in the docs.

For the impatient reader, here is a tl;dr using docker.

Let's start by cloning the development template:

> git clone [email protected]:shopware/development.git

You now have the application template for the Shopware Platform in the directory development, we now change into it:

> cd development

Only if you want to work with the Shopware platform code itself, e.g. in order to create a pull request for it, you should clone the platform code manually. Before doing so, empty the existing platform directory.

> rm platform/.gitkeep
> git clone [email protected]:shopware/platform
> git checkout @ platform/.gitkeep

Build and start the containers:

> ./psh.phar docker:start

Access the application container:

> ./psh.phar docker:ssh

Execute the installer:

> ./psh.phar install 

This may take a while since many caches need to be generated on first execution, but only on first execution.

To be sure that the installation succeeded, just open the following URL in your favorite browser: localhost:8000

Now you're all set to start developing your first plugin.

Roadmap

You make the roadmap!

Shopware 6 will continue to evolve together with you and your feedback. This is our number one priority!

With openness as one of our core values, we will always provide you with a transparent overview of our product development.
The Shopware Roadmap shows you what we are working on, what we want to tackle next, and what visions we have for the future.

Take a look at the current roadmap here.

Our community is our strongest asset

In today’s information-based world, you cannot thrive in closed systems. Black boxes and vendor lock-in models hurt innovation – and belong in the dark ages of ecommerce.

The future of IT is all about collaboration. At Shopware, we believe that the best ecommerce solution can only be developed in constant exchange with the people that use it every day. This is why we made a clear promise to the open source approach and embrace everyone willing to participate. We consider our community to be our greatest strength; not our competitor, like many companies tend to do.

We believe that our open source edition is our strongest asset and that we need, now more than ever, to invest in our ecosystem of partners and developers. So that we can work together to collaborate across backgrounds, experiences and ideas and mutually benefit from the software that results.

Join the community now 🖤

Subscribe to our developer newsletter and get updates about:

  • Releases
  • Upcoming breaking changes
  • Important documentation changes and updates
  • Community events
  • Relevant blog articles

Subscribe now

Give us feedback

Moritz Naczenski
Community Manager
Twitter: @m_naczenski
Niklas Dzösch
Developer Evangelist
[email protected]
Twitter: @ndzoesch

Ecosystem

Our Shopware Ecosystem gives you all the information you need to dive deep into the Shopware universe.

Shopware Community Store

Whether plugin, theme or marketing tool: You can easily extend the functionality of your shop with over 3,500 available plugins in the Community Store.

store.shopware.com

Academy

Do you want to become a Shopware expert or get a sneak peek into the software? Find a training session that is individually tailored to your interests.

shopware.com/academy/

Shopware Community Day

Held annually, the Shopware Community Day informs ecommerce enthusiasts from across Europe about the current state - and future - of digital commerce.

scd.shopware.com

Contribution

First of all - Every contribution is meaningful, so thank you for participating.

You want to participate in the development of Shopware? There are many ways to contribute:

  • Submitting pull requests
  • Reporting issues on the issue tracker
  • Discuss shopware on e.g Slack or our forum
  • Write a translation for shopware on crowdin

You have a question regarding contribution, or you want to contribute in another way?

Please write us an email: [email protected]

Code Contribution

If you have decided to contribute code to Shopware and become a member of the Shopware community, we appreciate your hard work and want to handle it with the most possible respect. To ensure the quality of our code and our products we have created a guideline we all should endorse to. It helps you and us to collaborate. Following these guidelines will help us to integrate your changes in our daily workflow.

Read more in our contribution guideline or in our short HowTo contribute code.

The Shopware CLA

When submitting your code to Shopware you automatically need to sign our CLA (Contributor License Agreement). This CLA ensures that Shopware will stay an open and living product. In short, you give the explicit right to use your code in Shopware to shopware AG.

Reporting security issues

Please have a look at our security policy.

License

Shopware 6 is completely free and released under the MIT License.

Authors

Comments
  • fix handling of large and many custom-field-sets

    fix handling of large and many custom-field-sets

    1. Why is this change necessary?

    Handling of more than 100 Custom-Field-Sets were broken. (For Sets which were not within the first 100 were unable to populate its fields.

    2. What does this change do, exactly?

    Fixes the described scenario.

    1. Fetches the Product Fieldset without a limit and its related fields. (increases performance when there are 500 custom-field-sets for products (approx. 15MB were transfered before the page was usable))
    2. Populates only the attached Field-Sets with fields
    3. when adding new Sets to the Product we fetch the associated fields for this set only.

    3. Describe each step to reproduce the issue or behaviour.

    1. Create more than 100 Product Custom Field Sets (with at least 1 Field)
    2. Create a product
    3. Try to attach the 101st Field-Set

    4. Please link to the relevant issues (if any).

    #2448

    5. Checklist

    • [x] I have written tests and verified that they fail without my change
    • [x] I have created a changelog file with all necessary information about my changes
    • [ ] I have written or adjusted the documentation according to my changes
    • [x] This change has comments for package types, values, functions, and non-obvious lines of code
    • [x] I have read the contribution requirements and fulfil them.
    Accepted 
    opened by digitalkaoz 36
  • Built admin plugins not compatible in version 6.4.10.0

    Built admin plugins not compatible in version 6.4.10.0

    PHP Version

    7.4 & 8.0

    Shopware Version

    6.4.10.0

    Expected behaviour

    Admin plugins that are built under Shopware < 6.4.10.0 should be compatible with Shopware 6.4.10.0 either and vice versa.

    I can also not use a plugin that is built under 6.4.10.0 in shopware <= 6.4.9.0

    Actual behaviour

    Plugin is built with bin/build-administration.sh under Shopware 6.4.9.0. The compiled .js file should also work under 6.4.10.0.

    There is no error message in the admin and also no error message in the developer console.

    How to reproduce

    Just call bin/build-administration.sh in a shopware version smaller than 6.4.10.0 and try to use this in 6.4.10.0.

    Bug 
    opened by jlaute 36
  • Add plugin zip import command

    Add plugin zip import command

    1. Why is this change necessary?

    There is still no really good way to version community store plugins.

    1. sw:store:download is not available in shopware 6 yet
    2. packages.friendsofshopware.com is not officially supported

    Now you can at least version a downloaded plugin file and simply do: bin/console plugin:zip-import SwagBundle.zip && bin/console plugin:install --activate SwagBundle

    2. What does this change do, exactly?

    Add a new command to import plugin zip files. Add optional parameter to disable file deletion on import via CLI.

    3. Describe each step to reproduce the issue or behaviour.

    1. Have a previously downloaded plugin zip file
    2. Open /admin
    3. Open plugin management
    4. Upload zip file
    5. Install plugin
    6. Activate plugin
    7. Be annoyed that it is not possible via CLI in an easy way to do the same

    4. Checklist

    • [ ] I have written tests and verified that they fail without my change
    • [x] I have squashed any insignificant commits
    • [ ] I have written or adjusted the documentation according to my changes
    • [ ] This change has comments for package types, values, functions, and non-obvious lines of code
    • [x] I have read the contribution requirements and fulfil them.
    Accepted 
    opened by JoshuaBehrens 30
  • Support keys in collection constructor

    Support keys in collection constructor

    1. Why is this change necessary?

    This prevents data loss.

    2. What does this change do, exactly?

    On constructing a collection it takes the same keys from the iteratable input for storing the elements internally.

    3. Describe each step to reproduce the issue or behaviour.

    1. Have a dataset indexed by a key so you can easily look that up
    2. Add static types by wrapping in typed collection
    3. Use get to get item by indexed key
    4. Retrieved item is null grafik

    4. Checklist

    • [ ] I have written tests and verified that they fail without my change
    • [x] I have squashed any insignificant commits
    • [ ] I have written or adjusted the documentation according to my changes
    • [ ] This change has comments for package types, values, functions, and non-obvious lines of code
    • [x] I have read the contribution requirements and fulfil them.
    Accepted 
    opened by JoshuaBehrens 25
  • [NEXT-7780] add titles to text-editor-toolbar

    [NEXT-7780] add titles to text-editor-toolbar

    1. Why is this change necessary?

    For better user experience there should be a function related title on the buttons in sw-text-editor-toolbar. Ref #669

    2. What does this change do, exactly?

    Introduced titles. Reset titles in submenu, to prevent displaying parent titles. Remove margin on left side of tooltips with light appearance, cause this doesn't sound relevant and looks weird in CMS. Special thanks to @taltholtmann and @tobiasberge :-)

    3. Describe each step to reproduce the issue or behaviour.

    4. Please link to the relevant issues (if any).

    https://issues.shopware.com/issues/NEXT-7780

    5. Checklist

    • [ ] I have written tests and verified that they fail without my change
    • [x] I have squashed any insignificant commits
    • [x] I have written or adjusted the documentation according to my changes
    • [x] This change has comments for package types, values, functions, and non-obvious lines of code
    • [x] I have read the contribution requirements and fulfil them.
    Accepted 
    opened by tinect 24
  • Amend type hint to match default value

    Amend type hint to match default value

    1. Why is this change necessary?

    The phpdocs for the route defaults does not match the typehint in the arguments. This results in an an exception on the php side as the type constraint is not fulfilled. So the validity check whether the parameter is ok is never reached and no readable exception is thrown/logged.

    2. What does this change do, exactly?

    Loosen up the typehint by adding nullability.

    3. Describe each step to reproduce the issue or behaviour.

    1. Do not configure contact layout page
    2. Click on contact in storefront
    3. Do not get a contact form
    4. Look in logs
    5. Uncaught PHP Exception TypeError: "Argument 1 passed to Shopware\Storefront\Controller\CmsController::page() must be of the type string, null given
    6. Expecting Parameter "Parameter id missing" is missing.
    7. Wut?
    8. Check message concatenation for MissingRequestParameterException
    9. See weird refactoring result
    10. Take notes for next pull request

    4. Checklist

    • [ ] I have written tests and verified that they fail without my change
    • [x] I have squashed any insignificant commits
    • [ ] I have written or adjusted the documentation according to my changes
    • [ ] This change has comments for package types, values, functions, and non-obvious lines of code
    • [x] I have read the contribution requirements and fulfil them.
    Accepted 
    opened by JoshuaBehrens 24
  • [ISSUE/1227] parentTheme config field inheritance, add changelog

    [ISSUE/1227] parentTheme config field inheritance, add changelog

    1. Why is this change necessary?

    It is useless to copy the same config fields accross themes. Why can I set a parentThemeId when it is not using the inheritance (confusing).

    2. What does this change do, exactly?

    It allows to inherit the config fields from a parent theme

    3. Describe each step to reproduce the issue or behaviour.

    Create two themes, add one theme as parentTheme via API, try to build the childTheme after that (there will be also a core bug) Create some config fields ... there is no inheritance from parent to child.

    4. Please link to the relevant issues (if any).

    See https://github.com/shopware/platform/issues/1227 and https://github.com/shopware/platform/issues/507

    5. Checklist

    • [X] I have run the core tests without any error
    • [X] I have squashed any insignificant commits
    • [X] I have created a changelog file with all necessary information about my changes
    • [X] I have written or adjusted the documentation according to my changes
    • [ ] This change has comments for package types, values, functions, and non-obvious lines of code
    • [X] I have read the contribution requirements and fulfil them.
    Declined 
    opened by BrocksiNet 22
  • Fix transactions and data consistency

    Fix transactions and data consistency

    @OliverSkroblin As discussed. #1668 should be merged first. After that I can rebase my branch to the then-current trunk.

    1. Why is this change necessary?

    This PR fixes various transaction issues and improves data consistency.

    2. What does this change do, exactly?

    • All calls to beginTransaction have been replaced with the new RetryableTransaction class, as it provides a cleaner interface anyway and the previous code did not execute rollback on exceptions.
    • MultiInsertQueryQueue now uses RetryableTransaction as well as there is no use case where it is desirable that half of the inserts is in the DB and then the execution of the script stops and the other half is left in the wide nothingness.
    • Introduced transactions at multiple code positions to improve data consistency. Also removed all attempts to be smarter than the DBMS in case of a deadlock and try non-batchy execution of queries; executing single statements not within a transaction can lead to data inconsistency; executing single statements inside of a transaction is in no case beneficial to a batch statement. Catching exceptions also breaks the transaction control flow, i.e. they are not reverted correctly.

    3. Describe each step to reproduce the issue or behaviour.

    4. Please link to the relevant issues (if any).

    This fixes all issues I mentioned in the pull request #1668. This also fixes https://issues.shopware.com/issues/NEXT-15805.

    5. Checklist

    • [ ] I have written tests and verified that they fail without my change
    • [ ] I have squashed any insignificant commits
    • [ ] I have created a changelog file with all necessary information about my changes
    • [ ] I have written or adjusted the documentation according to my changes
    • [ ] This change has comments for package types, values, functions, and non-obvious lines of code
    • [ ] I have read the contribution requirements and fulfill them.

    6. To-Do-List

    • [x] If you have code-style enforcers, you might want to make sure that nobody introduces new beginTransaction, commit or rollback calls. All transactions should be implemented using RetryableTransaction.
    • [x] I've encountered some other occurrences of catch (\Exception) or catch (\Throwable). This is code-smell, i.e. one likely never wants to catch ALL exceptions. You might want to review (i.e. remove) these.
    • [ ] The last commit ("Make batch behave like previous non-batch") makes the code behave like previously, but I don't think it is a good idea to ignore all errors. The best way would be to fix the code such that the IGNOREs are not necessary anymore. The second-best solution is to change RetryableTransaction to pass an argument to the transactional closure (I guess this has to be done via Closure::bind to not interfere with Doctrine), passing in its retry $counter so the closure can determine if this is the first execution or a following one. In the following cases, it could perform an INSERT IGNORE instead.
    • [ ] Call $connection->setNestTransactionsWithSavepoints(true) globally.
    Accepted 
    opened by UlrichThomasGabor 20
  • Implemented completion aware interface for stecman symfony console completion

    Implemented completion aware interface for stecman symfony console completion

    1. Why is this change necessary?

    For easier usability of console commands.

    Did you ever recognized a whole uuid? Do you know by heart what the plugin was spelled?

    Examples in usage were already shown in the pull request for shopware 5.

    2. What does this change do, exactly?

    Implements for all core/shipped commands the CompletionAwareInterface Adds hints in the documentation

    3. Describe each step to reproduce the issue or behaviour.

    Press tab to complete your shopware console commands. It just does not work.

    4. Which documentation changes (if any) need to be made because of this PR?

    ☑ https://docs.shopware.com should get a hint on the setup and pros. There is a complementary pull request to https://github.com/shopware/development/pull/20 to ensure this features is ready in the default docker container.

    Declined 
    opened by JoshuaBehrens 20
  • Log elasticsearch issues in any case

    Log elasticsearch issues in any case

    1. Why is this change necessary?

    When you run in prod mode and have an elastichsearch falling back to database search you don't know why because neither a log message is logged or an exception is thrown.

    2. What does this change do, exactly?

    Log in any case of an exception before environment evaluation is done.

    3. Describe each step to reproduce the issue or behaviour.

    1. Use plugins that extend elasticsearch queries
    2. Have a slow page or weird behaviour when enabling elastic based search
    3. No hints in the log files

    4. Checklist

    Is there a legit way how to test it when the first check literally is: am I in a test?

    • [ ] I have written tests and verified that they fail without my change
    • [x] I have squashed any insignificant commits
    • [x] I have created a changelog file with all necessary information about my changes
    • [ ] I have written or adjusted the documentation according to my changes
    • [ ] This change has comments for package types, values, functions, and non-obvious lines of code
    • [x] I have read the contribution requirements and fulfil them.
    Accepted 
    opened by JoshuaBehrens 19
  • Add RetryableTransaction, update RetryableQuery to prevent database deadlocks in EntityWriteGateway

    Add RetryableTransaction, update RetryableQuery to prevent database deadlocks in EntityWriteGateway

    1. Why is this change necessary?

    As discussed with @OliverSkroblin when writing entities in multiple threads and/or transactions at the same time deadlocks may occur in the database. When a deadlock occurs within a transaction, MySQL rolls back the transaction internally. Therefore the whole transaction can be retried. This is also stated in the MySQL error message:

    ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction
    

    The EntityWriteGateway uses a transaction but uses a RetryableQuery inside this transaction (code). In case of a deadlock a single query of the transaction is now retried (code) even though the transaction was already rolled back internally by the database. Since queries inside a multi-query-transaction may depend on each other, this causes all kinds of unintended behaviour (i.e. foreign key constraint violations). The description of the RetryableException that is caught also suggest to retry the transaction, not a single query. Therefore the usage of the current RetryableQuery only works when running a single query in no transaction.

    2. What does this change do, exactly?

    This PR adds a RetryableTransaction class which can be used to execute a number of commands (queries) inside a transaction which can be rolled back and retried as a whole without side effects or unwanted behaviour. Additionally the current usages of RetryableQuery are updated to check whether or not the query is executed inside a transaction. Now if this is the case, the RetryableQuery will not be retried when a deadlock occurs. For that the functions execute and retryable have been backwards-compatibly updated to accept a Doctrine\DBAL\Connection $connection to ensure this new safe behaviour.

    3. Describe each step to reproduce the issue or behaviour.

    Run two complex processes, e.g. create new versions of an existing order and update many products at the same time. A real life example is the order document creation via the administration. This creates a new order version and triggers a complex product subscriber from the Pickware ERP plugin. Since this is a race condition error, your results may vary.

    4. Please link to the relevant issues (if any).

    5. Checklist

    • [ ] I have written tests and verified that they fail without my change
    • [x] I have squashed any insignificant commits
    • [x] I have created a changelog file with all necessary information about my changes
    • [x] I have written or adjusted the documentation according to my changes
    • [x] This change has comments for package types, values, functions, and non-obvious lines of code
    • [x] I have read the contribution requirements and fulfil them.
    Accepted 
    opened by hanneswernery 19
  • Admin display setting in user profile

    Admin display setting in user profile

    Please describe the feature you would like to see implemented.

    Hi all,

    In my opinion there are some setting missing in de (admin)user profile;

    1. By default '25 items per page' are shown in the Admin, would be great if we can make this an option under (admin)user setting. This can be very handy with large amount of products/orders/clients.
    2. Select default screen language (not interface language), if multi languages are available for the front-end.

    Would be great if this can be added to SW. Thanks, Tim

    Feature Request 
    opened by Tim-VL 0
  • No permission that maps to product_media:update

    No permission that maps to product_media:update

    PHP Version

    8.1

    Shopware Version

    6.4.18

    Expected behaviour

    When I assign the 'Edit' permission on product (or media?) I should be able to change media of a product in the API.

    Actual behaviour

    I get the error

    {"message":"Missing privilege","missingPrivileges":["product_media:update","product_media:update","product_media:update"]}
    

    How to reproduce

    Create a role with the above permissions and try to patch product media.

    I think the product_media:read permission should be added to one of these admin permissions.

    Bug 
    opened by nickygerritsen 0
  • JWT key permission check always fails on Windows

    JWT key permission check always fails on Windows

    PHP Version

    8.1.13

    Shopware Version

    6.4.18.0

    Expected behaviour

    After a fresh install on Windows and having generated the required jwt/config/private.pem and jwt/config/public.pem files, starting the server symfony server:start -d and accessing the admin login page, both files should be correctly read from disk so the authorization server can be instantiated by the container and the whole page can function.

    Actual behaviour

    You get an exception:

    {
    	code: "0",
    	status: "500",
    	title: "Internal Server Error",
    	detail: "User Notice: Key file "file://C:\projects\personal\project/config/jwt/public.pem" permissions are not correct, recommend changing to 600 or 660 instead of 666",
    	meta: {
    		// ...
    	}
    }
    
    Full API Response
    {
    	"errors": [
    		{
    			"code": "0",
    			"status": "500",
    			"title": "Internal Server Error",
    			"detail": "User Notice: Key file \u0022file://C:\\projects\\personal\\project/config/jwt/public.pem\u0022 permissions are not correct, recommend changing to 600 or 660 instead of 666",
    			"meta": {
    				"trace": [
    					{
    						"file": "C:\\projects\\personal\\project\\var\\cache\\dev_hae705bf1e4f7057c4da9d57bc278047b\\Container5V6QJWM\\Shopware_Core_KernelDevDebugContainer.php",
    						"line": 22661,
    						"function": "__construct",
    						"class": "League\\OAuth2\\Server\\CryptKey",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\var\\cache\\dev_hae705bf1e4f7057c4da9d57bc278047b\\Container5V6QJWM\\Shopware_Core_KernelDevDebugContainer.php",
    						"line": 11913,
    						"function": "getApiAuthenticationListenerService",
    						"class": "Container5V6QJWM\\Shopware_Core_KernelDevDebugContainer",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\event-dispatcher\\EventDispatcher.php",
    						"line": 245,
    						"function": "Container5V6QJWM\\{closure}",
    						"class": "Container5V6QJWM\\Shopware_Core_KernelDevDebugContainer",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\event-dispatcher\\EventDispatcher.php",
    						"line": 76,
    						"function": "sortListeners",
    						"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\shopware\\core\\Content\\Flow\\Dispatching\\FlowDispatcher.php",
    						"line": 126,
    						"function": "getListeners",
    						"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\shopware\\core\\Framework\\Webhook\\WebhookDispatcher.php",
    						"line": 161,
    						"function": "getListeners",
    						"class": "Shopware\\Core\\Content\\Flow\\Dispatching\\FlowDispatcher",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\shopware\\core\\Framework\\Event\\BusinessEventDispatcher.php",
    						"line": 100,
    						"function": "getListeners",
    						"class": "Shopware\\Core\\Framework\\Webhook\\WebhookDispatcher",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\shopware\\core\\Framework\\Event\\NestedEventDispatcher.php",
    						"line": 69,
    						"function": "getListeners",
    						"class": "Shopware\\Core\\Framework\\Event\\BusinessEventDispatcher",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\event-dispatcher\\Debug\\TraceableEventDispatcher.php",
    						"line": 293,
    						"function": "getListeners",
    						"class": "Shopware\\Core\\Framework\\Event\\NestedEventDispatcher",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\event-dispatcher\\Debug\\TraceableEventDispatcher.php",
    						"line": 148,
    						"function": "preProcess",
    						"class": "Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\http-kernel\\HttpKernel.php",
    						"line": 139,
    						"function": "dispatch",
    						"class": "Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\http-kernel\\HttpKernel.php",
    						"line": 75,
    						"function": "handleRaw",
    						"class": "Symfony\\Component\\HttpKernel\\HttpKernel",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\http-kernel\\Kernel.php",
    						"line": 202,
    						"function": "handle",
    						"class": "Symfony\\Component\\HttpKernel\\HttpKernel",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\http-kernel\\HttpCache\\SubRequestHandler.php",
    						"line": 86,
    						"function": "handle",
    						"class": "Symfony\\Component\\HttpKernel\\Kernel",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\http-kernel\\HttpCache\\HttpCache.php",
    						"line": 479,
    						"function": "handle",
    						"class": "Symfony\\Component\\HttpKernel\\HttpCache\\SubRequestHandler",
    						"type": "::"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\http-kernel\\HttpCache\\HttpCache.php",
    						"line": 452,
    						"function": "forward",
    						"class": "Symfony\\Component\\HttpKernel\\HttpCache\\HttpCache",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\http-kernel\\HttpCache\\HttpCache.php",
    						"line": 346,
    						"function": "fetch",
    						"class": "Symfony\\Component\\HttpKernel\\HttpCache\\HttpCache",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\http-kernel\\HttpCache\\HttpCache.php",
    						"line": 224,
    						"function": "lookup",
    						"class": "Symfony\\Component\\HttpKernel\\HttpCache\\HttpCache",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\shopware\\core\\HttpKernel.php",
    						"line": 154,
    						"function": "handle",
    						"class": "Symfony\\Component\\HttpKernel\\HttpCache\\HttpCache",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\shopware\\core\\HttpKernel.php",
    						"line": 79,
    						"function": "doHandle",
    						"class": "Shopware\\Core\\HttpKernel",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\public\\index.php",
    						"line": 76,
    						"function": "handle",
    						"class": "Shopware\\Core\\HttpKernel",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\symfony\\runtime\\Runner\\Symfony\\HttpKernelRunner.php",
    						"line": 35,
    						"function": "handle",
    						"class": "Symfony\\Component\\HttpKernel\\HttpKernelInterface@anonymous\u0000C:\\projects\\personal\\project\\public\\index.php:66$1776",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\vendor\\autoload_runtime.php",
    						"line": 29,
    						"function": "run",
    						"class": "Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKernelRunner",
    						"type": "-\u003E"
    					},
    					{
    						"file": "C:\\projects\\personal\\project\\public\\index.php",
    						"line": 12,
    						"args": [
    							"C:\\projects\\personal\\project\\vendor\\autoload_runtime.php"
    						],
    						"function": "require_once"
    					}
    				],
    				"file": "C:\\projects\\personal\\project\\vendor\\league\\oauth2-server\\src\\CryptKey.php",
    				"line": 80
    			}
    		}
    	]
    }
    

    How to reproduce

    On a Windows 11 machine, with PHP v8.1.13, Symfony CLI v5.4.20 and Docker v20.10.21 installed, run the following commands, from this repository's README.md:

    > composer create-project shopware/production:dev-flex project
    > cd project
    > docker compose up -d
    > symfony console system:install --basic-setup --drop-database --create-database -f
    > symfony server:start -d
    

    Then, generate your secret files and remember to set the password to shopware:

    > openssl genrsa -out ./config/jwt/private.pem -aes256 4096
    > openssl rsa -pubout -in ./config/jwt/private.pem -out ./config/jwt/public.pem
    

    Finally, visit localhost:8000/admin. You should be greeted with the previously mentioned error.

    Further Context

    This happens because League\OAuth2\Server\CryptKey::__construct by default checks for file permissions. While that is a perfectly valid idea in Linux, in Windows files don't follow a similar permission system as as such, when requested, PHP always returns 666. This can be a pain for Windows developers and packages such as laravel/passport have decided to disable it by default, by passing the false as the third parameter of the constructor. It seems to be the maintainers "recommendation" as per https://github.com/thephpleague/oauth2-server/issues/779.

    Now I'm really new to Shopware (this really was my first attempt at installing it), but it seems to me that simply editing shopware\core\Framework\DependencyInjection\api.xml definitions to pass false as the last argument should work. For testing purposes, I replaced old definitions in my vendor folder with the ones below, and it worked™.

    <service class="League\OAuth2\Server\CryptKey" id="shopware.private_key">
        <argument>file://%kernel.project_dir%/config/jwt/private.pem</argument>
        <argument>shopware</argument>
    +    <argument>false</argument>
    </service>
    <service class="League\OAuth2\Server\CryptKey" id="shopware.public_key">
        <argument>file://%kernel.project_dir%/config/jwt/public.pem</argument>
    +    <argument>null</argument>
    +    <argument>false</argument>
    </service>
    

    Perhaps not always disabling it, but only on Windows? I think this could be done with <argument type="expression">PHP_OS_FAMILY !== 'Windows'</argument>, but I haven't tested it.

    Either way, I would be happy to work on a PR to solve this issue if you could point me in the right direction.

    Bug 
    opened by rmobis 2
  • Fix Validation Violation Localization

    Fix Validation Violation Localization

    1. Why is this change necessary?

    To fix #2902

    2. What does this change do, exactly?

    Add the correct snippets, and improve consistent dotting in the fallback messages.

    3. Describe each step to reproduce the issue or behaviour.

    Create a random promotion and cause a error (place the end date before the start date)
    See that the text is english
    

    4. Please link to the relevant issues (if any).

    #2902

    5. Checklist

    • [X] I have rebased my changes to remove merge conflicts
    • [X] I have written tests and verified that they fail without my change
    • [X] I have created a changelog file with all necessary information about my changes
    • [X] I have written or adjusted the documentation according to my changes
    • [X] This change has comments for package types, values, functions, and non-obvious lines of code
    • [X] I have read the contribution requirements and fulfil them.
    opened by AltayAkkus 0
  • Promotion error messages not localized

    Promotion error messages not localized

    PHP Version

    trunk

    Shopware Version

    trunk

    Expected behaviour

    Error messages (like "End date needs to be after the start date") should be localized to the users language

    Actual behaviour

    Only the english messages are shown

    How to reproduce

    1. Create a random promotion and cause a error (place the end date before the start date)
    2. See that the text is english

    This because here https://github.com/shopware/platform/blob/e91d42f995e192aac6f2504a950ad55fb9b13ccc/src/Core/Checkout/Promotion/Validator/PromotionValidator.php#L245-L251 and all the other buildViolation calls a snippet key is defined, but the snippet is not, so the default english fallback is used.

    Bug 
    opened by AltayAkkus 0
  • Add blockResubmit feature to Cart Validation

    Add blockResubmit feature to Cart Validation

    1. Why is this change necessary?

    Plugins may want to add cart validators which prevent a user from submitting the order, but don't stop him from retrying.

    2. What does this change do, exactly?

    It adds a error collector which collects cart errors with a blockResubmit option, just like blockOrder. The error collector checks if the corresponding errors even own such a method, so it does not fail if a error does not have the attribute, it's purely optional and fully backwards compatible. And it adds a check in the Twig template for the cart submit button for this very attribute.

    3. Describe each step to reproduce the issue or behaviour.

    Trigger a cart error (add a product, set shipping to country XYZ, go to checkout, before you checkout remove that country from your storefront, try to submit), add the method blockResubmit to the error which returns a boolean false, and you should see that the order is blocked, but you can retry. E.g. ShippingAddressBlockedError.php

    4. Please link to the relevant issues (if any).

    #2898

    5. Checklist

    • [X] I have rebased my changes to remove merge conflicts
    • [X] I have written tests and verified that they fail without my change Yes 0727377
    • [X] I have created a changelog file with all necessary information about my changes
    • [X] I have written or adjusted the documentation according to my changes https://github.com/shopware/docs/pull/800
    • [X] This change has comments for package types, values, functions, and non-obvious lines of code
    • [X] I have read the contribution requirements and fulfil them.

    Incomplete Missing tests 
    opened by AltayAkkus 1
Releases(v6.4.18.0)
  • v6.4.18.0(Dec 8, 2022)

    Changelog

    NEXT-14677 - Alternative reply-to email address can optionally be provided for send mail actions in the Flow Builder NEXT-20646 - The LandingPage Object is restructured NEXT-20720 - Added condition to Rule Builder for tags of orders NEXT-22895 - Deprecated the sw-settings-store module NEXT-23171 - Added data loading error handling to src/Administration/Resources/app/administration/src/module/sw-manufacturer/page/sw-manufacturer-detail/index.js NEXT-23660 - Hoverable title for extension description to show complete text (JoshuaBehrens) NEXT-23666 - Auto-completion when creating sales channels if only one language / currency exists (JoshuaBehrens) NEXT-23680 - English snippet in the Extensions listing changed from "Set permissions" to "Permissions". NEXT-23699 - Unify wording to "URL" (JoshuaBehrens) NEXT-23742 - disable sw-select input if search function is disabled (stefanpoensgen) NEXT-23779 - Fixed a JS error related to the sw-tabs component if no default slot was given (aragon999) NEXT-23780 - - Remove shadow from admin sw-hero cards (JoshuaBehrens) NEXT-23798 - - Fix spelling mistake in filename sw-sidebar-collapse.scss (janiilicious) NEXT-23834 - Show translated unit name in product-detail-price-unit (jkrzefski) NEXT-23835 - Change cursor on collapse sidebar in sw-sidebar-collaps (janiilicious) NEXT-23855 - Core * Connection::executeUpdate is deprecated, use the replacement Connection::executeStatement (cngJo) NEXT-23925 - The navigation arrows in an ImageSlider have been revised so that they are better visible on dark backgrounds (Lilibell) NEXT-23963 - The admin extension SDK does execute the commands in the hidden location iFrame multiple times NEXT-24007 - Adds the possibility to initialize plugins in ajax modal (runelaenen) NEXT-24053 - - Added the created_by_id and updated_by_id to the customer table to distinguish between customer created by admin and customer registered - Added the label Created by admin to the customer listing and customer detail page NEXT-24106 - A link in the CONTRIBUTING.md file pointing to ADR'S was fixed. (kiplingi)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-18-0

    Changes: https://github.com/shopware/platform/compare/v6.4.17.2...v6.4.18.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.17.2(Nov 16, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-17-2

    Changes: https://github.com/shopware/platform/compare/v6.4.17.1...v6.4.17.2

    Source code(tar.gz)
    Source code(zip)
  • v6.4.17.1(Nov 11, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-17-1

    Changes: https://github.com/shopware/platform/compare/v6.4.17.0...v6.4.17.1

    Source code(tar.gz)
    Source code(zip)
  • v6.4.17.0(Nov 7, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-17-0

    Changes: https://github.com/shopware/platform/compare/v6.4.16.1...v6.4.17.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.16.1(Oct 20, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-16-1

    Changes: https://github.com/shopware/platform/compare/v6.4.16.0...v6.4.16.1

    Source code(tar.gz)
    Source code(zip)
  • v6.4.16.0(Oct 10, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-16-0

    Changes: https://github.com/shopware/platform/compare/v6.4.15.2...v6.4.16.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.15.2(Oct 5, 2022)

  • v6.4.15.1(Sep 21, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-15-1

    Changes: https://github.com/shopware/platform/compare/v6.4.15.0...v6.4.15.1


    Information for projects using composer

    Please be aware, that you'll need to apply this small patch in order to successfully upgrade to v6.4.15.0, or alternatively pull the latest changes from the production template.

    Source code(tar.gz)
    Source code(zip)
  • v6.4.15.0(Sep 19, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-15-0

    Changes: https://github.com/shopware/platform/compare/v6.4.14.0...v6.4.15.0


    Information for projects using composer

    Please be aware, that you'll need to apply this small patch in order to successfully upgrade to v6.4.15.0, or alternatively pull the latest changes from the production template.

    Source code(tar.gz)
    Source code(zip)
  • v6.4.14.0(Aug 1, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-14-0

    Changes: https://github.com/shopware/platform/compare/v6.4.13.0...v6.4.14.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.13.0(Jul 4, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-13-0

    Changes: https://github.com/shopware/platform/compare/v6.4.12.0...v6.4.13.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.12.0(Jun 14, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-12-0

    Changes: https://github.com/shopware/platform/compare/v6.4.11.1...v6.4.12.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.11.1(May 5, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-11-1

    Changes: https://github.com/shopware/platform/compare/v6.4.11.0...v6.4.11.1

    Source code(tar.gz)
    Source code(zip)
  • v6.4.11.0(May 4, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-11-0

    Changes: https://github.com/shopware/platform/compare/v6.4.10.1...v6.4.11.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.10.1(Apr 20, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-10-1

    Changes: https://github.com/shopware/platform/compare/v6.4.10.0...v6.4.10.1

    Source code(tar.gz)
    Source code(zip)
  • v6.4.10.0(Apr 5, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-10-0

    Changes: https://github.com/shopware/platform/compare/v6.4.9.0...v6.4.10.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.9.0(Mar 14, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-9-0

    Changes: https://github.com/shopware/platform/compare/v6.4.8.2...v6.4.9.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.8.2(Mar 9, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-8-2

    Changes: https://github.com/shopware/platform/compare/v6.4.8.1...v6.4.8.2

    Source code(tar.gz)
    Source code(zip)
  • v6.4.8.1(Feb 14, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-8-1

    Changes: https://github.com/shopware/platform/compare/v6.4.8.0...v6.4.8.1

    Source code(tar.gz)
    Source code(zip)
  • v6.4.8.0(Feb 9, 2022)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-8-0

    Changes: https://github.com/shopware/platform/compare/v6.4.7.0...v6.4.8.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.7.0(Dec 9, 2021)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-7-0

    Changes: https://github.com/shopware/platform/compare/v6.4.6.1...v6.4.7.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.6.1(Nov 24, 2021)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-6-1

    Changes: https://github.com/shopware/platform/compare/v6.4.6.0...v6.4.6.1

    Source code(tar.gz)
    Source code(zip)
  • v6.4.6.0(Nov 3, 2021)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-6-0

    Changes: https://github.com/shopware/platform/compare/v6.4.5.1...v6.4.6.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.5.1(Oct 6, 2021)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-5-1

    Changes: https://github.com/shopware/platform/compare/v6.4.5.0...v6.4.5.1

    Source code(tar.gz)
    Source code(zip)
  • v6.4.5.0(Oct 4, 2021)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-5-0

    Changes: https://github.com/shopware/platform/compare/v6.4.4.1...v6.4.5.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.4.1(Sep 14, 2021)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-4-1

    Changes: https://github.com/shopware/platform/compare/v6.4.4.0...v6.4.4.1

    Source code(tar.gz)
    Source code(zip)
  • v6.4.4.0(Sep 6, 2021)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-4-0

    Changes: https://github.com/shopware/platform/compare/v6.4.3.1...v6.4.4.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.3.1(Aug 16, 2021)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-3-1

    Changes: https://github.com/shopware/platform/compare/v6.4.3.0...v6.4.3.1

    Source code(tar.gz)
    Source code(zip)
  • v6.4.3.0(Aug 2, 2021)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-3-0

    Changes: https://github.com/shopware/platform/compare/v6.4.2.1...v6.4.3.0

    Source code(tar.gz)
    Source code(zip)
  • v6.4.2.1(Jul 8, 2021)

    Find more information here: https://www.shopware.com/en/changelog/#6-4-2-1

    Changes: https://github.com/shopware/platform/compare/v6.4.2.0...v6.4.2.1

    Source code(tar.gz)
    Source code(zip)
Owner
Shopware
You can find more of our open source projects at https://github.com/shopwareLabs
Shopware
An eCommerce website is an online store where you can buy or sell products online. An eCommerce offers a professional online store builder that helps you launch your eCommerce business quickly and successfully.

An eCOMMERCE-SITE An eCommerce website is an online store where you can buy or sell products online. An eCommerce offers a professional online store b

UTTKARSH PARMAR 2 Aug 8, 2022
Open Source eCommerce Platform on Symfony

Sylius is an Open Source eCommerce platform on top of Symfony. The highest quality of code, strong testing culture, built-in Agile (BDD) workflow and

Sylius eCommerce 7.2k Jan 3, 2023
Sylius is an Open Source eCommerce platform on top of Symfony.

Sylius is an Open Source eCommerce platform on top of Symfony. The highest quality of code, strong testing culture, built-in Agile (BDD) workflow and

Sylius eCommerce 7.2k Jan 5, 2023
Payu payment gateway for bagisto laravel ecommerce open source platform

Bagisto Payu Payment Gateway Payu is a popular payment gateway in india. This package provides a additional strong help for the user to use the payu p

Saju G 3 Dec 14, 2021
Simple Ecommerce Platform on Symfony - E-Learning

Simple Ecommerce Platform on Symfony - E-Learning

Vincent Manuceau 1 May 8, 2022
A free open source e-commerce platform for online merchants based on customised version of Laravel.

A free open source e-commerce platform for online merchants based on customised version of Laravel.

Ace Vinayak 58 Oct 19, 2022
Size chart plugin for Sylius ecommerce platform.

Madcoders Sylius Size Chart Plugin Features upload size chart files (for example for shoes, t-shirts and similar products) match size charts by rules

MADCODERS 4 Oct 29, 2021
PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

PrestaShop is an Open Source e-commerce web application, committed to providing the best shopping cart experience for both merchants and customers. It is written in PHP, is highly customizable, supports all the major payment services, is translated in many languages and localized for many countries, has a fully responsive design (both front and back office), etc. See all the available features.

PrestaShop 6.9k Dec 31, 2022
AbanteCart is a free PHP based eCommerce solution for merchants to provide ability creating online business and sell products online quick and efficient.

AbanteCart is a free PHP based eCommerce solution for merchants to provide ability creating online business and sell products online quick and efficient. AbanteCart application is built and supported by experienced enthusiasts that are passionate about their work and contribution to rapidly evolving eCommerce industry. AbanteCart is more than just a shopping cart, it is rapidly growing eCommerce platform

AbanteCart 129 Nov 15, 2022
GetCandy is an open source E-commerce platform which embraces Laravel

GetCandy is an open source E-commerce platform which embraces Laravel as it's foundation and uses it to build a highly extensible, robust and feature rich application you can build any store on.

GetCandy 16 Jun 15, 2022
Full stack shop app with Symfony

A progressive PHP framework for building efficient and scalable server-side applications. Description A fullstack shop app with Symfony framework and

F43Z 6 Feb 20, 2022
The Laravel eCommerce DHL Shipping module module calculates the shipping rates based on DHL API for product shipping.

Introduction DHL Shipping Add-on provides DHL Shipping methods for shipping the product. It packs in lots of demanding features that allows your busin

Bagisto 1 May 31, 2022
A Free and Opensource Laravel eCommerce framework built for all to build and scale your business.

Bagisto is a hand tailored E-Commerce framework built on some of the hottest opensource technologies such as Laravel (a PHP framework) and Vue.js a progressive Javascript framework.

Bagisto 5k Jan 5, 2023
Laravel eCommerce Pre Order Extension allows the customers and guest users to pre-order the upcoming product and out of stock products.

Introduction Bagisto Pre-order add-on allows the customer to pre-order products which are not yet available at the online store. With the help of Bagi

Bagisto 3 May 31, 2022
A free shopping cart system. OpenCart is an open source PHP-based online e-commerce solution.

OpenCart is a free open source ecommerce platform for online merchants. OpenCart provides a professional and reliable foundation from which to build a successful online store.

OpenCart 6.6k Dec 31, 2022
Ecommerce website for Sales of Product according to their categories and Tags with pictures

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Muhammad Fahad 1 Nov 8, 2021
Laravel eCommerce headless APIs allow you to experience seamless and easily scalable storefront performance.

Bagisto GraphQL API Laravel eCommerce headless APIs allow you to experience seamless and easily scalable storefront performance. An open-source and Gr

Bagisto 30 Dec 29, 2022
The Laravel eCommerce Image Gallery allows the admin to add/manage images into various galleries and galleries into various groups according to requirements.

The Laravel eCommerce Image Gallery allows the admin to add/manage images into various galleries and galleries into various groups according to requirements.

Bagisto 2 May 31, 2022
PrestaShop module that allows an ecommerce/brand to display its physical retailers in a map

PrestaShop module that allows an ecommerce/brand to display its physical retailers in a map Features Free of charge: instead of using pa

Darío Scattolini 3 Apr 15, 2022