GithubHelp home page GithubHelp logo

shopsys / demoshop Goto Github PK

View Code? Open in Web Editor NEW
8.0 12.0 2.0 21.15 MB

Demo application for Shopsys Framework

Home Page: https://www.shopsys.com

License: Other

PHP 68.87% Shell 1.03% Batchfile 0.01% JavaScript 8.45% CSS 1.72% HTML 0.47% Dockerfile 0.23% Twig 13.16% Less 6.06%
shopsys-framework demo-shop

demoshop's Introduction

Shopsys Platform

Build Status - master

Shopsys Platform is a fully functional e-commerce solution for businesses transitioning into tech companies with their own software development team. It contains the most common B2C and B2B features for online stores, and its infrastructure is prepared for high scalability.

Shopsys Platform is the fruit of our 16 years of experience in creating custom-made online stores, and it’s dedicated to the best in-house devs teams who work with online stores with tens of millions of Euros of turnover per year.

Our platform’s architecture is modern and corresponds to the latest trends in the production of software for leading e-commerce solutions. Deployment and scaling of our system are comfortable thanks to containerization and orchestration concepts (Docker, Kubernetes). The platform is based on one of the best PHP frameworks on the market - Symfony.

Shopsys Platform Infrastructure

Shopsys Platform Infrastructure

Current State and Roadmap

Current State

Shopsys Platform is a fully functional e-commerce solution with all the basic functionality all e-commerce sites need:

  • Product catalog
  • Registered customers
  • Basic orders management
  • Back-end administration
  • Front-end full-text search and product filtering
  • 3-step ordering process
  • Basic CMS
  • Support for several currencies, languages, and domains
  • Full friendly URL for main entities and full control over SEO aspects of online presence
  • Performance optimization through Elasticsearch, Redis, PostgreSQL
  • Full core upgradability
  • GDPR compliance
  • Preparation for scalability
  • Manifest for orchestration via Kubernetes
  • Support to easier deployment to Google Cloud via Terraform
  • Basic GraphQL Front-end API for implementation of own front-end and PWA

Plans for next releases

An overview of our goals and priorities can be found in our Shopsys Platform Roadmap

How to Start a New Project

The shopsys/shopsys package is a monolithic repository, a single development environment, for the management of all parts of Shopsys Platform. See more information about the monorepo approach in the Monorepo article.

For the purposes of building a new project, use the shopsys/project-base, which is fully ready as the base for building your Shopsys Platform project.

For more detailed instructions, follow one of the installation guides:

Documentation

For documentation of Shopsys Platform itself, see Shopsys Platform Knowledge Base.

For the frequently asked questions, see FAQ and Common Issues.

Contributing

Let us know if you have some ideas or want to help improve Shopsys Platform! We are looking forward to your insights, feedback, and improvements. Thank you for helping us make Shopsys Platform better.

All the necessary information is in our Contribution Guide.

Support

What to do when you are in troubles or need some help? The best way is to join our Slack.

If you are experiencing problems during installation or running Shopsys Platform on Docker, please see our Docker troubleshooting.

Or ultimately, just report an issue.

License

We distribute the main parts of Shopsys Platform under two different licenses:

  • Community License in MIT style for growing small to mid-size e-commerce sites with total online sales less than 12.000.000 EUR / year (3.000.000 EUR / quarter)
  • Commercial License

Learn the principles on which we distribute our product on our website at Licenses and Pricing section.

Some of Shopsys Platform repositories including HTTP smoke testing and Monorepo Tools are distributed under standard MIT license so generally you can use it without any restriction. The information about the license is placed in the LICENSE file in the root of each repository.

Shopsys Platform also uses some third-party components and images which are licensed under their own respective licenses. The list of these licenses is summarized in Open Source License Acknowledgements and Third Party Copyrights.

demoshop's People

Contributors

boris-brtan avatar davidkuna avatar davidostrozlik avatar grossmannmartin avatar henzigo avatar krhovjak avatar kulincz avatar lukasheinz avatar machal avatar malymiso avatar mhujer avatar miroslav-stopka avatar miroslav2stopka avatar msshopsys avatar paolo42 avatar petrheinz avatar pk16011990 avatar s3tezsky avatar seedya avatar simara-svatopluk avatar sspooky13 avatar sustmi avatar tomasgottvald avatar tomasludvik avatar vitek-rostislav avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

demoshop's Issues

2. step of order doesn't found

What is happening

When I want go from basket to shipping and payment page doesn't work.

Expected result

I need to fix the page in order to go through the order

Demoshop: The second SEO category label

As an e-shop operator, I want to be able to set up a label category so I can support my SEO.

Acceptance Criteria:

  • For each domain, the administrator can separately set the second label for the category listing pages for each domain
  • The administrator can identify them easily - ideally the label above and below the listing
  • The customer sees the set label above the listing of the products in the category

Unify variable annotations through codebase

What is happening

Currently, there is not exactly clear, what type of variable annotation is preferred and should be used to maintain uniformity.

Several types of annotating variables can be found (placed after/before variable, type/name first)
For example

/** @var \Shopsys\FrameworkBundle\Model\Cart\Watcher\CartWatcherService $cartWatcherService */
$cartWatcherService = $this->getContainer()->get(CartWatcherService::class); 

and

$cartWatcherService = $this->getContainer()->get(CartWatcherService::class);
/* @var $cartWatcherService \Shopsys\FrameworkBundle\Model\Cart\Watcher\CartWatcherService */

Expected result

We should agree on one style and force it. Even better, to have code style check for it.

Customer menu colors don't really fit the design

What is happening

hen a customer is logged in and opens the customer menu, it doesn't really fit the Demoshop design.

image

Expected result

Colors are tweaked to better fit the overall looks of the Demoshop.

fix group separation in admin/category/edit

What is happening

After #8 change in administration form there are new elements at the end of the form and some visual bug between feed plugin group and new descriptions
image

Expected result

image

Missing translations

There are some phrases without translations to CZ and DE in src/Shopsys/ShopBundle/Resources/translations/messages.*.po.
Besides there are new datafixtures which are not translated to german yet.

Expected result

Translated:

  • Administration
  • Demo product images by
  • Do not distribute without permission.
  • Martin Chefmaster
  • Powered by

Also translated datafixtures?

Zasilkovna pickup place - weird UX when no place is found

What is happening

In 2nd step of order when I choose Zasilkovna pickup place and nothing is found for my entry in the popup window, I am not notified in any way that no pickup place was found.

It seems weird for me from UX point of view - I enter a phrase, click on "search" and nothing happens at all.
image

Expected result

I would appreciate any kind of info message that would tell me that no pickup place was found for my search term.

Search doesn't work

What is happening

Search on demoshop doesn't work. "500 Internal Server Error"

Expected result

Please repair.

Add chatbot for public demoshop

There should be a chatbot everywhere. Please place code below into head everywhere (all domains + admin):

<script type="text/javascript"> window._chatlio = window._chatlio||[]; !function(){ var t=document.getElementById("chatlio-widget-embed");if(t&&window.ChatlioReact&&_chatlio.init)return void _chatlio.init(t,ChatlioReact);for(var e=function(t){return function(){_chatlio.push([t].concat(arguments)) }},i=["configure","identify","track","show","hide","isShown","isOnline", "page", "open", "showOrHide"],a=0;a

Add Google Analytics codes for FE and admin of Public demoshop

I need to add GA for Public demoshop - in the beginning of element add those codes to defined URL addresses.

https://demo.shopsys.com/ and administration

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-402396-40"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-402396-40'); </script>

https://dedemo.shopsys.com/

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-402396-41"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-402396-41'); </script>

https://czdemo.shopsys.com/

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-402396-42"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-402396-42'); </script>

create tests and demo data for customer discount from #31

What is happening

On demoshop there is implemented customer/(company customers) discount for price groups. This implementation now shows some dependencies with MoneyType change from stable release.
Maybe this customized part of the demoshop could be covered by automatic tests.

Expected result

To have customer discount covered by tests (acceptance/smoke).

PHPStan level 4 weird issue

What is happening

When I use phpstan with level 4, on of the errors is the following:

Line   CountryRepository.php                                                                                                                                   
 ------ -------------------------------------------------------------------------------------------------------------------------------------------------------- 
  24     Method Shopsys\ShopBundle\Model\Country\CountryRepository::getByCode() should return Shopsys\FrameworkBundle\Model\Country\Country but returns object.

This is very weird as the same works fine in framework (we use Doctrine extesion for phpstan for that). I thought it might be connected to a class extension, however, the same problem is in PickUpPlaceRepository - this class has no parents in framework, so I am really confused about what can be wrong.

Expected result

PHPStan on level understands Doctrine in demoshop

Flashing header

What is happening

The header sometimes flashes when switching between pages.

Expected result

Please fix it

Zasilkovna shipping method is created by datafixtures and tested

What is happening

During upgrades, we can miss to upgrade some part of the demoshop functionality from Zasilkovna shipping method.

Expected result

Since there are datafixtures in ShopBundle we are able to include zasilkovna shipping method into demodata and have the whole functionality tested by automatic tests.

Demoshop: Zasilkovna - dispensing points

As a customer, I want to be able to send the goods to the Zásilkovna dispensary so I can pick it up there.

Acceptance Criteria:

  • the Administrator can set up a Mailbox type for traffic.
  • e-shop regularly downloads the list of dispensing points directly from the Zasilkovna
  • the customer sees the option of "Shipment Point - Dispensing Points"
  • when choosing "Shipments", a customer's floating window will pop up with the choice of delivery points
  • the customer can filter the branch office list by entering the city name or zip code, which automatically updates the list after entering and sees the city's dispensing points
  • the customer can see the opening hours on particular branch office (from an xml feed updated every day)
  • if the customer chooses a specific dispensing location, he / she can see the dispatcher's address under the transport (from xml feed updated every day)
  • when selecting a dispensing point for transport "Shipping", the delivery address is pre-filled in the third step and can not be changed
  • the order number stores the branch office ID (dispensing point)

Demoshop: Google Feed edit - adding a new "condition" tag

As an e-shop operator, I want to keep my status on the merchandise and export this information to the google feed to give my customers more accurate information.

Acceptance Criteria:

  • the product has a new "condition" attribute, which is set in admin using the selectbox
    - in the default state, the products are set to "new"
  • this attribute is exported to the google feed
  • the attribute is displayed on frontend page on the product detail

Zasilkovna pickup place – still visible box and weird UX when is place selected

What is happening

  • Selected place in label has no active class and I can't style it than

Now I temporary fix it by CSS in pick-up-place.less: on lines 54 and 41 (display none / block when is label active)

There you can see commented video where I see some other UX troubles that can't be easily specified. There are no critical buggies.
https://www.useloom.com/share/80d7ad24d3824e759c0fec00a7ef91ca

Expected result

  • Selected place in label could has active class for styling purpose
  • Or maybe batter solution: Markup can load to label after place is selected

Administrator cannot log out

What is happening

After implementation of #68 the log out function for any administrator doesn't work - it doesn't do anything.

Expected result

When I am logged as universal administrator and I click to log out, I should get logged out (redirect to admin login page). All other users logged as this admin should remain logged.

remove container names

What is happening

for scaling and for building and deploying projects during production or development or CI it is better to have docker-compose config without names. The output name of the container will constist of project name that can be set with -p or default is name of the folder and with the name of the service and order of scaling instance
for example: demoshop_php-fpm_1

Expected result

container names in docker-compose.yml could be renamed or removed.

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.