GithubHelp home page GithubHelp logo

hassanelsherbiny / powerstore Goto Github PK

View Code? Open in Web Editor NEW
92.0 4.0 16.0 82.06 MB

Power Store - Multi-Store E-Commerce Platform

C# 56.13% JavaScript 16.77% HTML 22.71% CSS 4.34% Dockerfile 0.01% Less 0.04%

powerstore's Introduction

Power Store - Multi-Store E-Commerce Platform

Welcome to Power Store (Formerly Grand Store), the open-source multi-store e-commerce application that offers flexibility and scalability for your online business. Manage multiple stores, currencies, languages, and payment options seamlessly. Power Store

Features

  • Multi-Store Support:

    • Easily manage and operate multiple online stores within a single platform.
    • Customizable storefronts for each store.
  • Multi-Currency:

    • Support for multiple currencies to cater to a global audience.
    • Real-time currency conversion based on user preferences.
  • Multi-Language:

    • Reach a diverse audience with support for multiple languages.
    • Easily localize product details, descriptions, and UI elements.
  • Multi-Payment Options:

    • Diverse payment gateways integration for a variety of payment methods.
    • Secure and seamless transactions.
  • Product Management:

    • Effortlessly add, update, and manage products across different stores.
    • Categorize and organize products efficiently.
  • User Authentication and Authorization:

    • Secure user accounts with authentication and authorization features.
    • User roles and permissions for admin, sellers, and customers.
  • Responsive Design:

    • Mobile-friendly design to ensure a smooth shopping experience across devices.
  • Order Management:

    • Efficient order processing, tracking, and fulfillment.
    • Order history and status updates for customers.

Roadmap

Version 1.0.0

  • Basic multi-store functionality.
  • Multi-currency and multi-language support.
  • Integration with popular payment gateways.

Version 1.1.0

  • Enhanced product management features.
  • User authentication and authorization improvements.
  • Additional language support.

Version 1.2.0 (Current Release)

  • Advanced reporting and analytics.
  • Expanded support for additional payment gateways.
  • Integration with third-party services.

Version 1.2.0 (Future Release)

  • Creating Mobile Applications.
  • Add Auctions Feature.
  • Integration with GoHigh Level.

Getting Started (Developer)

Follow these steps to get Power Store up and running on your local machine:

  1. Clone the repository: git clone https://github.com/hassanelsherbiny/PowerStore.git
  2. Install dependencies: nuget restore PowertStore.sln
  3. Configure the database and environment variables.
  4. Run the application.

Getting Started (User)

Follow these steps to get Power Store up and running on your local machine:

  1. Download Release Folder
  2. Deploy Using IIS
  3. Start The Application
  4. On Installation Page Configure the database Connection.
  5. Configure Your Store

Contributing

We welcome contributions from the community. If you'd like to contribute to Power Store

License

Power Store is released under the MIT License.

powerstore's People

Contributors

ellinacogter avatar hassanelsherbiny avatar linathab avatar mattycode1 avatar robertraff1 avatar titianamuhler 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

Watchers

 avatar  avatar  avatar  avatar

powerstore's Issues

Add Product Search Functionality

Integrate a search feature that allows users to search for products by name, category, or other relevant attributes.

Steps to Reproduce:

  1. Visit the application's homepage.
  2. Locate the search bar at the top of the page.
  3. Enter a product name or keyword into the search bar and press Enter.

Fix Cart Item Quantity Update Issue

There is a bug in the cart page where updating the quantity of a product sometimes does not reflect the correct quantity in the cart. This inconsistency can lead to incorrect order totals and user frustration. Investigate and fix the issue to ensure that updating the quantity of cart items functions correctly.

Steps to Reproduce:

  1. Add multiple items to the cart.
  2. Navigate to the cart page.
  3. Attempt to update the quantity of a specific product.
  4. Observe that the updated quantity is not reflected correctly in the cart.

Fix Checkout Page Payment Gateway Integration Issue

There is an issue with integrating payment gateways on the checkout page, causing errors during the payment process. This issue prevents users from completing their purchases and negatively impacts revenue. Investigate and fix the payment gateway integration issue to ensure smooth transactions.

Steps to Reproduce:

  1. Proceed to the checkout page.
  2. Attempt to make a payment.
  3. Notice errors or issues during the payment process.
  4. Try different payment methods to verify the issue.
  5. Observe any error messages or unexpected behavior.

Enhance Responsive Design

Improve the responsiveness of the application to ensure optimal user experience across various devices and screen sizes.

Steps to Reproduce:

  1. Access the application from different devices, such as desktop, laptop, tablet, and smartphone.
  2. Resize the browser window to simulate different screen sizes.
  3. Observe the layout and design changes to adapt to different viewport dimensions.

Enhance Product Recommendation Engine

Improve the product recommendation system to suggest relevant products based on user browsing history, preferences, and purchase behavior.

Steps to Reproduce:

  1. Log in to the application with a user account.
  2. Browse through products in different categories.
  3. Notice personalized product recommendations based on browsing history and preferences.

Add Social Sharing Buttons

Include social sharing buttons on product pages to allow users to easily share products on social media platforms.

Steps to Reproduce:

  1. Visit a product page on the application.
  2. Locate the social sharing buttons next to the product details.
  3. Click on the desired social media platform icon to share the product.

Fix Checkout Bug

Fix a bug that causes errors during the checkout process, preventing users from completing their purchases.

Steps to Reproduce:

  1. Add one or more items to the shopping cart.
  2. Proceed to checkout and attempt to complete the order.
  3. Encounter an error message or unexpected behavior that prevents successful completion of the checkout process.

Add Location field for the order CustomValues

version: 4.60

Suggestion that there now be a case to add a Type or DIsplay Location field and make it a Tuple <DisplayLocation, Key, Value>
So that the values can be linked to and displayed in the most approporaite location under either:

BillingAddress - Billing Address related customer values
ShippingAddress - Shipping Address related customer values
Payment - For values associated with Payment i.e. Receipt number or Invoice Number
Shipping - For values associated with Shipping i.e. Pickup Point

Source: https://github.com/nopSolutions//issues/5250#issuecomment-1905815327

Improve Checkout Page Loading Speed

The checkout page currently takes longer than expected to load, especially during peak traffic periods. This slow loading speed can result in abandoned carts and lost sales. Optimize the checkout page to reduce loading times and improve overall performance.

Steps to Reproduce:

  1. Proceed to the checkout page.
  2. Observe the loading time of the checkout page.
  3. Notice any delays or lags during the loading process.
  4. Compare the loading speed to other pages on the website.

Performance issue - NopResourceDisplayNameAttribute uses async methods synchronously - which leads to threadpool starvation in high traffic

version:
4.5, 4.6

Steps to reproduce the problem:
We noticed issue in our production enviornment that site becomes unresponsive in some peek load, we have captured memory dump in the event scenario and during analysis found that many threads are waiting in NopResourceDisplayNameAttribute.DisplayName.get()

image

Problem is DisplayName property calls LocalizationService.GetResourceAsync() and waits for result

image

I think possible solution could be to not load localized resource from the NopResourceDisplayNameAttribute.DisplayName instead handel it from NopLabelTagHelper.ProcessAsync so that it keeps all async stack

Elasticsearch search

Recently we've already introduced the ISearchPluginManager and search providers out of the box. It's used in the "SearchProductsAsync" method of "ProductService". So we can implement this full-text search engine out of the box quite easily.

This task does not require any additional details.

Implement Multi-Language Support

Expand the reach of the e-commerce platform by implementing multi-language support. This feature allows users to browse and shop in their preferred language, improving accessibility and user satisfaction.

Steps to Reproduce:

  1. Access the website.
  2. Navigate to the language settings or options.
  3. Observe the absence of multi-language support.
  4. Try to change the language preference.
  5. Notice the lack of language options or translations.

Add setting to log honeypot detection entries

version: 4.60

How can we control the logging going on from Honeypot? I had to turn it on and also recapcha v3 as it didn't take long for bots to attack my contact us form, etc. Now that I have honeypot in use and recaptcha v3 it appears to mitigate it but I'm getting a ton of log entries from this honeypot / bot. How can I disable logging for bots?

Source: https://www..com/boards/topic/98627/honeypot-clogging-up-log-with-bot-entries

Let's add an advanced (without UI) setting LogHoneypotDetection in SecuritySettings and log entries only if this setting is enabled.

Implement Order Tracking

Develop an order tracking system that allows users to track the status of their orders from placement to delivery.

Steps to Reproduce:

  1. Log in to the application with a user account.
  2. Place an order for one or more products.
  3. Navigate to the order tracking page to view the status of the order.

Fix Search Bar Autocomplete Issue

The search bar autocomplete feature is not working consistently, leading to incomplete or inaccurate search suggestions. Users rely on autocomplete to quickly find products, so it's essential to resolve this issue to enhance the search functionality.

Steps to Reproduce:

  1. Start typing in the search bar.
  2. Observe the autocomplete suggestions.
  3. Notice inconsistencies or inaccuracies in the autocomplete results.
  4. Try different search queries to further test the autocomplete functionality.

Enhance Admin Dashboard

Enhance the admin dashboard with additional analytics, reporting tools, and management features for better control and oversight.

Steps to Reproduce:

  1. Log in to the admin dashboard with administrative credentials.
  2. Explore the existing analytics and management features.
  3. Identify areas for improvement and new features to be added.

Optimize Page Load Speed

Identify and address performance bottlenecks to optimize the page load speed and improve overall user experience.

Steps to Reproduce:

  1. Visit various pages of the application, including product listings, individual product pages, and checkout.
  2. Measure and compare page load times using browser developer tools or performance monitoring tools.
  3. Identify areas where performance improvements are needed, such as heavy assets, slow database queries, or inefficient code execution.

Integrate Payment Gateway

Integrate a payment gateway (e.g., Stripe, PayPal) to enable secure online payments for orders placed on the platform.

Steps to Reproduce:

  1. Proceed to checkout with items in the shopping cart.
  2. Select a payment method at the checkout page.
  3. Enter payment details and complete the transaction.

Implement User Authentication Feature

Add user authentication functionality to the application, allowing users to sign up, log in, and manage their accounts.

Steps to Reproduce:

  1. Navigate to the application's homepage.
  2. Click on the 'Sign Up' or 'Log In' button.
  3. Fill in the required details and submit the form.

Enhance Product Filtering Options

The current product filtering options are limited, making it challenging for users to narrow down their product search. Enhance the filtering options by adding additional criteria such as brand, size, color, and price range.

Steps to Reproduce:

  1. Navigate to the product list page.
  2. Observe the existing filtering options.
  3. Try to filter products based on specific criteria.
  4. Notice the limitations in the available filtering options.
  5. Attempt to narrow down the product search with additional criteria.

Allow to filter message templates by email accounts

There's no way to see what message templates are assigned to an email without clicking into each message template, or using the database directly.

Let's add a new filter to the "Message templates" page.
Name: "Email account".
Possible values: "All" and a list of email accounts. These email accounts will be displayed in the following format - Email display name (Email address) - the same way as they are displayed now on a message template details page

We should display this dropdownlist when a store has two or more email accounts

RTL Support

RTL Is not Supported by languages and layout is not switching when changing language

Add Product Image Zoom Feature

Enhance the product detail page by adding an image zoom feature that allows users to view product images in greater detail. This feature improves the user experience and helps users make informed purchasing decisions.

Steps to Reproduce:

  1. Visit a product detail page.
  2. Observe the lack of image zoom functionality.
  3. Try to view product images in greater detail.
  4. Notice the inability to zoom in on product images.

Implement Product Sorting Feature

Currently, the product list page does not have sorting options, making it difficult for users to find products based on their preferences. Implement a sorting feature that allows users to sort products by price, popularity, or other relevant criteria.

Steps to Reproduce:

  1. Navigate to the product list page.
  2. Observe the absence of sorting options.
  3. Try to find products based on specific criteria.
  4. Notice the difficulty in finding desired products due to the lack of sorting functionality.

Forum permissions - Allow Customer to Create Post

I'd like to utilize the forum a little differently, where only administrators/forum mods can make posts and customers and guests are read-only.

Under /Admin/Setting/Forum I'd like to add the setting Allow Customer to create posts to enable/disable this functionality.
Or, add permissions to ACL rules /Admin/Security/Permissions so that the forum permissions can be assigned to any role.

Would you up-stream either of these changes?

Add Wishlist Feature

Implement a wishlist feature to allow users to save their favorite products for future reference.

Zettle Inventory doubling on initial synchronization when Inventory Tracking Enabled

version: 4.70

Using nop 4.70 with the zettle plugin.

When adding new inventory items (sync from Nop to zettle) with inventory tracking enabled, the inventory doubles due to the webhook being called to update inventory after creation.

I have added logging into the relevant sections to help me debug since this is an active site that I am unable to connect a debugger to.

This product I am trying to sync has an inventory level of 17.

Here is the data below:

Misc.Zettle information.
Synchronization started at 5:56:44 PM UTC
Add discounts...
Delete products...
  Also delete all existing library items before importing products
Change images...
Update inventory tracking...
Create and update products...
  Prepare 3 records to import
  Import 3 products (#7, #9, #10)
    Import (9164dece-da50-11ee-8f7f-3d465ce14ec0) created at 5:56:46 PM
Synchronization finished at 5:56:46 PM UTC

Then a product creation webhook occurs:


{
  "productUuid": "88398349-da50-11ee-aaa5-074994edb3be",
  "trackingStatusChange": "START_TRACKING",
  "variantChanges": [
    {
      "fromLocationUuid": "35c1f814-d8dd-11ee-80f2-39f9cbd7af56",
      "toLocationUuid": "35c1f856-d8dd-11ee-9912-4e467e438357",
      "variantUuid": "8839836c-da50-11ee-aaa5-074994edb3be",
      "change": 17
    }
  ]
}

UpdateInventoryBalanceAsync is called by webhook "ProductCreated"

{
  "productChanges": [
    {
      "productUuid": "88398349-da50-11ee-aaa5-074994edb3be",
      "trackingStatusChange": "START_TRACKING",
      "variantChanges": [
        {
          "fromLocationUuid": "35c1f814-d8dd-11ee-80f2-39f9cbd7af56",
          "toLocationUuid": "35c1f856-d8dd-11ee-9912-4e467e438357",
          "variantUuid": "8839836c-da50-11ee-aaa5-074994edb3be",
          "change": 17
        }
      ]
    }
  ],
  "returnBalanceForLocationUuid": "35c1f856-d8dd-11ee-9912-4e467e438357",
  "externalUuid": "925991aa-da50-11ee-aaa5-074994edb3be"
}

The problem appears to be the below item, webhook "InventoryBalanceChanged"

{
  "externalUuid": "925991aa-da50-11ee-aaa5-074994edb3be",
  "balanceBefore": [
    {
      "locationUuid": "35c1f856-d8dd-11ee-9912-4e467e438357",
      "productUuid": "88398349-da50-11ee-aaa5-074994edb3be",
      "variantUuid": "8839836c-da50-11ee-aaa5-074994edb3be",
      "balance": 0,
      "created": "2024-03-04T17:56:46.779+00:00"
    }
  ],
  "balanceAfter": [
    {
      "locationUuid": "35c1f856-d8dd-11ee-9912-4e467e438357",
      "productUuid": "88398349-da50-11ee-aaa5-074994edb3be",
      "variantUuid": "8839836c-da50-11ee-aaa5-074994edb3be",
      "balance": 17,
      "created": "2024-03-04T17:56:48.661+00:00"
    }
  ],
  "updated": {
    "timestamp": "2024-03-04T17:56:48.661+00:00"
  },
  "error": null,
  "error_description": null,
  "developerMessage": null
}

The issue:
_zettleSettings.InventoryTrackingIds

This object is newed up each time a new thread gets spawned. This is supposed to be the repository for any external tracking GUID's that are transmitted from zettle to nop. Since there are multiple items synced, multiple threads get spawned, and as a result the memory space for each instance of _zettleSettings.InventoryTrackingIds is not shared across requests.

These id's are stored in the database under table setting (zettlesettings.inventorytrackingids)
The issue here is that since the object is not shared across requests, this database location is overwritten constantly without concurrency.

If three products get added in bulk, three "InventoryBalanceChanged" webhook requests get fired, and each request only knows of it's own tracking id. not the other two leading to a loss of concurrent data.

I have re-worked this section to prevent this from occurring. I will submit a PR.

RoxyFileman dies on interpreting an invalid image

version: 4.60.5

Steps to reproduce the problem:

  1. Create an empty file in wwwroot/images/uploaded
  2. Rename it to resemble an image file (e.g. test.png)
  3. Try to use an image uploader in any WYSIWYG

RoxyFileman will stop working when this happens, as the call on RoxyFilemanFileProvider.cs#396 returns null and the next line throws an exception.

Expected behavior:

  • Do not list invalid images;
    or
  • List invalid images with some warning;
    or
  • Send a meaningful error message containing the problematic file's path relative to RoxyFileman root.

Implement Multi-Language Support

Add support for multiple languages to cater to users from diverse linguistic backgrounds and expand the application's reach.

Steps to Reproduce:

  1. Navigate to the application's settings or preferences page.
  2. Locate the language settings section.
  3. Select a different language from the available options and save the changes.

Do not validate model when changing password in admin area

version: 4.60

When attempting to change a customer's password in the backend, a bug has been identified. If you try to click on "change password" in the customers backend with an empty required field, such as "Company Name," the page simply refreshes without altering the password, and no error message is displayed. It leads to confusion as users might expect a notification regarding the missing information.

However, upon providing the necessary information in the required field and then attempting to change the password, the operation is successful, and a green success message is displayed as expected.

Additionally, when attempting to save the customer without making any changes, the system correctly displays an error message, indicating a discrepancy in behavior when compared to the password change scenario.

This inconsistency in error handling poses a usability and feedback challenge for users. The expected behavior is to receive an error message when attempting to change the password with a missing required field, similar to the behavior observed when saving the customer without any changes, or to be able to change the password without the need to check for required fields.

Please investigate and address this issue promptly to ensure a seamless and reliable user experience.

Source: https://www..com/boards/topic/98673/issue-with-password-change-in-backend-when-required-field-eg-company-name-is-empty

We already do it for EmailAccount password.
Also, let's map a password from the entity to the model, but hide it by *, like for EmailAccount.

Implement Shopping Cart Feature

Create a shopping cart system that enables users to add products to their cart, update quantities, and proceed to checkout.

Steps to Reproduce:

  1. Browse the product catalog and locate a desired item.
  2. Click on the 'Add to Cart' button next to the product.
  3. View the cart to see the added item and proceed to checkout.

Vendor Account Request

Add Feature For Requesting a vendor account.

  • User Fill Required Info
  • User submit request

Store Owner accept or reject the request
if request is accept a vendor account is added and assigned to the requester

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.