{"id":31882835,"url":"https://github.com/divanteltd/coreshop-vsbridge","last_synced_at":"2025-10-13T02:58:31.522Z","repository":{"id":33606582,"uuid":"159327039","full_name":"DivanteLtd/coreshop-vsbridge","owner":"DivanteLtd","description":"CoreShop Vue Storefront integration - first Progressive Web App (PWA) framework for Pimcore","archived":false,"fork":false,"pushed_at":"2022-06-09T10:53:02.000Z","size":2218,"stargazers_count":74,"open_issues_count":21,"forks_count":25,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-10-10T21:32:40.378Z","etag":null,"topics":["coreshop","ecommerce","pimcore","pimcore-plugin","vuestorefront"],"latest_commit_sha":null,"homepage":"https://vuestorefront.io","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DivanteLtd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-27T11:47:01.000Z","updated_at":"2025-02-19T12:59:41.000Z","dependencies_parsed_at":"2022-08-18T00:00:27.188Z","dependency_job_id":null,"html_url":"https://github.com/DivanteLtd/coreshop-vsbridge","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/DivanteLtd/coreshop-vsbridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DivanteLtd%2Fcoreshop-vsbridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DivanteLtd%2Fcoreshop-vsbridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DivanteLtd%2Fcoreshop-vsbridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DivanteLtd%2Fcoreshop-vsbridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DivanteLtd","download_url":"https://codeload.github.com/DivanteLtd/coreshop-vsbridge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DivanteLtd%2Fcoreshop-vsbridge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279014025,"owners_count":26085348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coreshop","ecommerce","pimcore","pimcore-plugin","vuestorefront"],"created_at":"2025-10-13T02:57:54.823Z","updated_at":"2025-10-13T02:58:31.517Z","avatar_url":"https://github.com/DivanteLtd.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# First Progressive Web App for Pimcore and CoreShop\n[![Build Status](https://travis-ci.org/DivanteLtd/coreshop-vsbridge.svg?branch=master)](https://travis-ci.org/DivanteLtd/coreshop-vsbridge)\n![Branch stable](https://img.shields.io/badge/stable%20branch-master-blue.svg)\n![Branch Develop](https://img.shields.io/badge/dev%20branch-develop-blue.svg)\n\u003ca href=\"https://join.slack.com/t/vuestorefront/shared_invite/enQtMzA4MTM2NTE5NjM2LTI1M2RmOWIyOTk0MzFlMDU3YzJlYzcyYzNiNjUyZWJiMTZjZjc3MjRlYmE5ZWQ1YWRhNTQyM2ZjN2ZkMzZlNTg\"\u003e![Branch Develop](https://img.shields.io/badge/community%20chat-slack-FF1493.svg)\u003c/a\u003e\n\nThis projects bring You the [Pimcore](https://pimcore.com) plus [Coreshop](http://www.coreshop.org/) support as a backend platform for [Vue Storefront - first Progressive Web App for e-Commerce](https://github.com/DivanteLtd/vue-storefront). \n\nVue Storefront is a standalone PWA storefront for your eCommerce, possible to connect with any eCommerce backend (eg. Magento, Pimcore, Prestashop or Shopware) through the API.\n\n ## Video demo\n [![See how it works!](https://github.com/DivanteLtd/vue-storefront/raw/master/docs/.vuepress/public/Fil-Rakowski-VS-Demo-Youtube.png)](https://www.youtube.com/watch?v=L4K-mq9JoaQ)\nSign up for a demo at https://vuestorefront.io/ (Vue Storefront integrated with Pimcore OR Magento2).\n\n# Pimcore data bridge\nVue Storefront is platform agnostic - which mean: it can be connected to virtually any eCommerce CMS. This project is a data connector for *CoreShop* and *Pimcore* data structures\n\nThe module is created as a Pimcore Symfony Bundle and provides the native data exchange capabilities of:\n- pushing the entities marked as Products (maped in the Pimcore Admin panel) to Elastic Search (including support for configurable products),\n- exposing all required dynamic API backends - like shopping cart, user accounts, totals etc.\n\n# Setup and installation\n\nThe Data Bridge is provided as a Pimcore extension (Symfony Bundle)\n\n## Requirements \n- php 7.1 or above\n- pimcore/pimcore 5.4 or above\n- coreshop/core-shop 2.0.x-dev\n- vuestorefront and vuestorefront api containers must be visible for pimcore and vice versa\n\n\n## Register bundles\n\nIn `app/AppKernel.php` of Your Pimcore instance please add this line to `registerBundlesToCollection`:\n```\n        if (class_exists('\\ONGR\\ElasticsearchBundle\\ONGRElasticsearchBundle')) {\n            $collection-\u003eaddBundle(new ONGR\\ElasticsearchBundle\\ONGRElasticsearchBundle);\n        }\n\n        if (class_exists('\\Cocur\\Slugify\\Bridge\\Symfony\\CocurSlugifyBundle')) {\n            $collection-\u003eaddBundle(new \\Cocur\\Slugify\\Bridge\\Symfony\\CocurSlugifyBundle());\n        }\n\n        if (class_exists('\\SymfonyBundles\\JsonRequestBundle\\SymfonyBundlesJsonRequestBundle')) {\n            $collection-\u003eaddBundle(new \\SymfonyBundles\\JsonRequestBundle\\SymfonyBundlesJsonRequestBundle());\n        }\n\n        if (class_exists('\\Lexik\\Bundle\\JWTAuthenticationBundle\\LexikJWTAuthenticationBundle')) {\n            $collection-\u003eaddBundle(new \\Lexik\\Bundle\\JWTAuthenticationBundle\\LexikJWTAuthenticationBundle());\n        }\n\n        if (class_exists('\\Gfreeau\\Bundle\\GetJWTBundle\\GfreeauGetJWTBundle')) {\n            $collection-\u003eaddBundle(new \\Gfreeau\\Bundle\\GetJWTBundle\\GfreeauGetJWTBundle());\n        }\n\n        if (class_exists('\\Nelmio\\CorsBundle\\NelmioCorsBundle')) {\n            $collection-\u003eaddBundle(new Nelmio\\CorsBundle\\NelmioCorsBundle());\n        }\n        \n        if (class_exists('Gesdinet\\JWTRefreshTokenBundle\\GesdinetJWTRefreshTokenBundle')) {\n            $collection-\u003eaddBundle(new \\Gesdinet\\JWTRefreshTokenBundle\\GesdinetJWTRefreshTokenBundle());\n        }\n```\n\n## Configure ES connection\nIn `app/config/config.yml` of Your Pimcore instance add this ElasticSearch configuration:\n```\nongr_elasticsearch:\n    managers:\n        default:\n            index:\n                index_name: vue_storefront_catalog\n                hosts:\n                    - es1:9200\n            mappings:\n                - CoreShop2VueStorefrontBundle\n```\n\n## Update database schema\n\nPlease execute the schema update\n`php bin/console doctrine:schema:update --force`\n\n\n## JWT Configuration\n1. Inside root pimcore directory run these commands:\n```\nmkdir -p config/jwt\nopenssl genrsa -out config/jwt/private.pem -aes256 4096\nopenssl rsa -pubout -in config/jwt/private.pem -out config/jwt/public.pem\n```\n\n2. In the main config file - `app/config/config.yml` please do add the following section:\n```\nlexik_jwt_authentication:\n    secret_key: '%kernel.project_dir%/config/jwt/private.pem'\n    public_key: '%kernel.project_dir%/config/jwt/public.pem' \n    pass_phrase: 'enterYourPhrase' \n    token_ttl:  3600\n    token_extractors:\n        authorization_header:\n            enabled: true\n            prefix:  Bearer\n            name:    Authorization\n\n        query_parameter:\n            enabled: true\n            name: token\n```\n\n## Vue Storefront Configuration\n\nAfter successfull Pimcore bundle installation Your Pimcore instance will be handling all the dynamic requests from Vue Storefront. Thereof You need to modify `vue-storefront/config/local.json` (assuming that Your Pimcore base URL is https://vuestorefrontcoreshop.localhost and ElasticSearch running on)\n\n**Note**: As the Vue Storefront will be connecting to ElasticSearch from the client's browser You probably should put some kind of Proxy in front of ElasticSearch for scalability and security reasons. Please consider using the [vue-storefront-api](). It's endpoint [`/api/catalog`](https://github.com/DivanteLtd/vue-storefront-api/blob/master/src/api/catalog.js) works as a ElasticSearch HTTP(s) proxy. You can achieve the same results using nginx either Varnish.\n\n```\n  \"elasticsearch\": {\n    \"httpAuth\": \"\",\n    \"host\": \"localhost:9200\",\n    \"index\": \"vue_storefront_catalog\",\n    \"min_score\": 0.02,\n    \"csrTimeout\": 5000,\n    \"ssrTimeout\": 1000\n  },\n \"cart\": {\n    \"create_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/cart/create?token={{token}}\",\n    \"updateitem_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/cart/update?token={{token}}\u0026cartId={{cartId}}\",\n    \"deleteitem_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/cart/delete?token={{token}}\u0026cartId={{cartId}}\",\n    \"pull_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/cart/pull?token={{token}}\u0026cartId={{cartId}}\",\n    \"totals_endpoint\": \"http://localhost:8080/api/cart/totals?token={{token}}\u0026cartId={{cartId}}\",\n    \"paymentmethods_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/cart/payment-methods?token={{token}}\u0026cartId={{cartId}}\",\n    \"shippingmethods_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/cart/shipping-methods?token={{token}}\u0026cartId={{cartId}}\",\n    \"shippinginfo_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/cart/shipping-information?token={{token}}\u0026cartId={{cartId}}\",\n    \"collecttotals_endpoint\": \"http://localhost:8080/api/cart/collect-totals?token={{token}}\u0026cartId={{cartId}}\",\n    \"deletecoupon_endpoint\": \"http://localhost:8080/api/cart/delete-coupon?token={{token}}\u0026cartId={{cartId}}\",\n    \"applycoupon_endpoint\": \"http://localhost:8080/api/cart/apply-coupon?token={{token}}\u0026cartId={{cartId}}\u0026coupon={{coupon}}\"\n  },\n \"orders\": {\n    \"endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/order?token={{token}}\",\n  },\n  \"users\": {\n    \"endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/user\",\n    \"history_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/user/order-history?token={{token}}\",\n    \"resetPassword_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/user/reset-password\",\n    \"changePassword_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/user/change-password?token={{token}}\",\n    \"login_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/user/login\",\n    \"create_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/user/create\",\n    \"me_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/user/me?token={{token}}\",\n    \"refresh_endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/user/refresh\"\n  },  \n  \"stock\": {\n    \"endpoint\": \"http://vuestorefrontcoreshop.localhost/vsbridge/stock\"\n  },\n  \"images\": {\n    \"baseUrl\": \"http://vuestorefrontcoreshop.localhost/img/\",\n    \"productPlaceholder\": \"/assets/placeholder.jpg\"\n  },   \n```\n\n\n# Data formats and architecture\nAs Pimcore is a very extensible Framework, the data structures and format may vary. By default we do support official [CoreShop](http://coreshop.org) data structures.\nFor demonstration purposes we do support all the standard entities like:\n- set of required attributes,\n- categories,\n- products: localized attributes, single photo (can be easily extendend), variants, prices.\n\n\n![CoreShop integration architecture](doc/pimcore2vuestorefront-architecture.png)\n\n# Screenshots\n\nPlease visit [Vue Storefront site](http://vuestorefront.io) to check out why it's so cool!\n\n![Admin panel integration](doc/20181204-111321.png)\n\u003cbr /\u003eThis is the standard Pimcore panel where You can edit Your products, categories and assets.\n\n![Category admin panel](doc/20181204-111306.png)\n\nHere is the order as it was transmited from Vue Storefront to CoreShop\n![Order admin panel](doc/20181204-111251.png)\n\nAll the products attributes, description, categories assets and other meta data is synchronized with Vue Storefront in real time\n![The frontend integration](doc/20181204-111019.png)\n\n\n# Credits\n\nThis module has been initially created by Divante's team:\n- Kamil Karkus - @kkarkus,\n- Kamil Wręczycki - @kwreczycki\n\n# Support\n\nIf You have any questions regarding this project feel free to contact us:\n- [E-mail](mailto:contributors@vuestorefront.io),\n- [Slack](http://slack.vuestorefront.io)\n\n# Licence \nCoreShop VsBridge source code is completely free and released under the [MIT License](https://github.com/DivanteLtd/vue-storefront/blob/master/LICENSE).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdivanteltd%2Fcoreshop-vsbridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdivanteltd%2Fcoreshop-vsbridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdivanteltd%2Fcoreshop-vsbridge/lists"}