Convert Figma logo to code with AI

smartstore logoSmartstore

A modular, scalable and ultra-fast open-source all-in-one eCommerce platform built on ASP.NET Core 7

1,154
426
1,154
539

Top Related Projects

ASP.NET Core eCommerce software. nopCommerce is a free and open-source shopping cart.

PrestaShop is the universal open-source software platform to build your e-commerce solution.

11,454

Prior to making any Submission(s), you must sign an Adobe Contributor License Agreement, available here at: https://opensource.adobe.com/cla.html. All Submissions you make to Adobe Inc. and its affiliates, assigns and subsidiaries (collectively “Adobe”) are subject to the terms of the Adobe Contributor License Agreement.

A free shopping cart system. OpenCart is an open source PHP-based online e-commerce solution.

A customizable, open-source ecommerce platform built on WordPress. Build any commerce solution you can imagine.

Quick Overview

Smartstore is an open-source e-commerce platform built on ASP.NET Core. It offers a feature-rich, modular architecture for creating and managing online stores, with a focus on performance, flexibility, and user experience.

Pros

  • Highly customizable and extensible through plugins and themes
  • Built on modern technologies (ASP.NET Core, Entity Framework Core)
  • Comprehensive set of e-commerce features out of the box
  • Active community and regular updates

Cons

  • Steeper learning curve compared to some other e-commerce platforms
  • Documentation could be more extensive for advanced customizations
  • Limited third-party integrations compared to more established platforms
  • Resource-intensive for smaller websites or shared hosting environments

Code Examples

  1. Creating a simple product:
var product = new Product
{
    Name = "Sample Product",
    ShortDescription = "A brief description",
    FullDescription = "A more detailed description",
    Price = 19.99m,
    Published = true
};

await _db.Products.AddAsync(product);
await _db.SaveChangesAsync();
  1. Implementing a custom widget:
[Widget("MyCustomWidget")]
public class MyCustomWidget : Widget
{
    public override Task<IViewComponentResult> InvokeAsync(WidgetContext context)
    {
        var model = new MyCustomWidgetModel
        {
            Title = "Custom Widget",
            Content = "This is a custom widget"
        };
        return Task.FromResult<IViewComponentResult>(View(model));
    }
}
  1. Adding a custom route:
public class RouteProvider : IRouteProvider
{
    public void RegisterRoutes(IEndpointRouteBuilder routes)
    {
        routes.MapControllerRoute(
            name: "MyCustomRoute",
            pattern: "custom/{action=Index}/{id?}",
            defaults: new { controller = "Custom" }
        );
    }

    public int Priority => 0;
}

Getting Started

  1. Clone the repository:

    git clone https://github.com/smartstore/Smartstore.git
    
  2. Open the solution in Visual Studio 2022 or later.

  3. Set the Smartstore.Web project as the startup project.

  4. Build and run the application.

  5. Follow the setup wizard to configure your store.

  6. Access the admin area at /admin to manage your store.

For more detailed instructions and documentation, refer to the official Smartstore documentation.

Competitor Comparisons

ASP.NET Core eCommerce software. nopCommerce is a free and open-source shopping cart.

Pros of nopCommerce

  • More extensive documentation and community support
  • Larger ecosystem of plugins and themes
  • Better multi-store and multi-vendor capabilities

Cons of nopCommerce

  • Steeper learning curve for beginners
  • Heavier resource usage, potentially impacting performance
  • Less flexible customization options for advanced developers

Code Comparison

nopCommerce:

public class ProductController : BasePublicController
{
    [HttpGet]
    public virtual IActionResult ProductDetails(int productId)
    {
        var product = _productService.GetProductById(productId);
        return View(product);
    }
}

Smartstore:

public class CatalogController : PublicControllerBase
{
    [HttpGet]
    public async Task<IActionResult> Product(int id)
    {
        var product = await _db.Products.FindByIdAsync(id);
        return View(product);
    }
}

Both repositories use similar MVC patterns for handling product details, but Smartstore employs async/await for database operations, potentially offering better performance in high-load scenarios. nopCommerce's approach is more straightforward, which may be easier for beginners to understand and implement.

PrestaShop is the universal open-source software platform to build your e-commerce solution.

Pros of PrestaShop

  • Larger community and ecosystem with more modules and themes
  • More extensive documentation and learning resources
  • Better multilingual and multi-currency support out of the box

Cons of PrestaShop

  • Steeper learning curve for developers
  • Can be resource-intensive, especially with many modules installed
  • Less flexible customization options compared to Smartstore

Code Comparison

PrestaShop (PHP):

class ProductController extends ModuleAdminController
{
    public function __construct()
    {
        $this->bootstrap = true;
        $this->table = 'product';
        $this->className = 'Product';
        parent::__construct();
    }
}

Smartstore (C#):

public class ProductController : ManageController
{
    public ProductController(SmartDbContext db, IProductService productService)
    {
        _db = db;
        _productService = productService;
    }
}

Both repositories offer robust e-commerce solutions, but they cater to different needs. PrestaShop has a larger ecosystem and more extensive features, making it suitable for larger businesses. Smartstore, on the other hand, offers more flexibility and easier customization, which can be beneficial for developers and smaller businesses with specific requirements. The code comparison shows that PrestaShop uses PHP and follows a more traditional MVC structure, while Smartstore is built with C# and employs dependency injection, reflecting modern development practices.

11,454

Prior to making any Submission(s), you must sign an Adobe Contributor License Agreement, available here at: https://opensource.adobe.com/cla.html. All Submissions you make to Adobe Inc. and its affiliates, assigns and subsidiaries (collectively “Adobe”) are subject to the terms of the Adobe Contributor License Agreement.

Pros of Magento 2

  • Larger community and ecosystem, with more extensions and resources available
  • More robust enterprise-level features for large-scale e-commerce operations
  • Better support for multi-store and multi-language setups

Cons of Magento 2

  • Steeper learning curve and more complex architecture
  • Higher resource requirements, potentially leading to slower performance
  • More expensive to develop and maintain, especially for smaller businesses

Code Comparison

Magento 2 (PHP):

<?php
namespace Magento\Catalog\Model;
class Product extends \Magento\Framework\Model\AbstractModel
{
    public function getName()
    {
        return $this->_getData('name');
    }
}

Smartstore (C#):

namespace Smartstore.Core.Catalog.Products
{
    public partial class Product : BaseEntity, IAuditable
    {
        public string Name { get; set; }
    }
}

Both repositories use object-oriented programming, but Magento 2 uses PHP while Smartstore uses C#. Magento 2's code structure is more complex, reflecting its larger feature set and flexibility. Smartstore's code is more concise and follows modern C# conventions, potentially making it easier to work with for developers familiar with .NET ecosystems.

A free shopping cart system. OpenCart is an open source PHP-based online e-commerce solution.

Pros of OpenCart

  • Larger community and ecosystem with more extensions and themes available
  • Simpler setup and configuration process, suitable for beginners
  • Lightweight core with lower server requirements

Cons of OpenCart

  • Less feature-rich out-of-the-box compared to Smartstore
  • Older codebase with some legacy code and architectural limitations
  • Limited built-in multi-store capabilities

Code Comparison

OpenCart (PHP)

public function index() {
    $this->load->language('product/category');
    $this->load->model('catalog/category');
    $this->load->model('catalog/product');
}

Smartstore (C#)

public async Task<IActionResult> Index()
{
    var model = await _categoryService.PrepareCategoryModelAsync();
    return View(model);
}

OpenCart uses a more traditional PHP approach with explicit loading of language files and models. Smartstore, built on ASP.NET Core, utilizes dependency injection and async/await patterns for better performance and maintainability.

While OpenCart offers simplicity and a vast ecosystem, Smartstore provides a more modern architecture and richer feature set out-of-the-box. The choice between them depends on specific project requirements, development expertise, and scalability needs.

A customizable, open-source ecommerce platform built on WordPress. Build any commerce solution you can imagine.

Pros of WooCommerce

  • Larger community and ecosystem with extensive plugin and theme options
  • Better integration with WordPress, leveraging its features and user base
  • More comprehensive documentation and learning resources

Cons of WooCommerce

  • Can be resource-intensive, especially for larger stores
  • Potentially higher costs due to premium extensions and themes
  • More complex setup and configuration process for advanced features

Code Comparison

WooCommerce (PHP):

add_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
add_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );

Smartstore (C#):

public override async Task<IActionResult> Index()
{
    var model = await _productService.GetProductsAsync();
    return View(model);
}

WooCommerce uses WordPress action hooks for content wrapping, while Smartstore employs a more traditional MVC approach with controller actions. WooCommerce's code is more tightly integrated with WordPress, whereas Smartstore offers a standalone e-commerce solution with potentially more flexibility in terms of customization and scalability.

Both platforms have their strengths, with WooCommerce excelling in WordPress integration and community support, while Smartstore provides a more independent and potentially more performant solution for larger e-commerce projects.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Smartstore

Smartstore

Ready. Sell. Grow.

A modular, scalable and ultra-fast open-source all-in-one eCommerce platform built on ASP.NET Core 7.

Try Online ∙ Forum ∙ Marketplace ∙ Translations


Smartstore Demoshop

Smartstore is a cross-platform, modular, scalable and ultra-fast open source all-in-one eCommerce platform based on ASP.NET Core 7, Entity Framework, Vue.js, Sass, Bootstrap and more.

Smartstore includes all the essential features to create multi-language, multi-store, multi-currency shops targeting desktop or mobile devices and enables SEO-optimised, rich product catalogs with support for unlimited number of products and categories, variants, bundles, datasheets, ESD, discounts, coupons and much more.

A comprehensive set of tools for CRM & CMS, Sales, Marketing, Payment & Shipping Handling etc. makes Smartstore a powerful all-in-one solution that meets all your needs.

Smartstore delivers a beautiful and configurable shop frontend out-of-the-box, built with a high level design approach, including components like Sass, Bootstrap and others. The included Flex theme is modern, clean and fully responsive, giving shoppers the best possible shopping experience on any device.

The state-of-the-art architecture of Smartstore - with ASP.NET Core 7, Entity Framework Core 7 and Domain Driven Design approach - makes it easy to extend, extremely flexible and basically fun to work with ;-)

 

Technology & Design

  • State-of-the-art architecture with ASP.NET Core 7, Entity Framework Core 7 and domain-driven design
  • Cross-platform: run it on Windows, Linux, or Mac
  • Supports Docker out of the box for easy deployment
  • Composable, extensible and highly flexible due to modular design
  • Highly scalable with full page caching and web farm support
  • Powerful theme engine allows you to create or customise themes & skins with minimal effort thanks to theme inheritance
  • Point&Click theme configuration
  • Liquid template engine: highly flexible templating for emails and campaigns with auto-completion and syntax highlighting
  • Html to PDF converter: creates PDF documents from regular HTML templates, radically simplifying the customisation of PDF output
  • Consistent and sophisticated use of modern components such as Vue.js, Sass, Bootstrap & more in the front and back end.
  • Easy shop management thanks to modern and clean UI

 

Key Features

Smartstore Screenshots

  • Multi-store support
  • Multi-language and full RTL (Right-to-Left) and Bidi(rectional) support
  • Multi-currency support
  • Product bundles, variants, attributes, ESD, tier pricing, cross-selling and more
  • Sophisticated marketing & promotion capabilities (gift cards, reward points, discounts of any kind, and more)
  • Reviews & Ratings
  • Media Manager: powerful and lightning fast media file explorer
  • Rule Builder: powerful rule system for visual business rule creation with dozens of predefined rules out-of-the-box
  • Search framework with faceted search support. Ultra-fast search results, even with millions of items!
  • Extremely scalable through output caching, REDIS & Microsoft Azure support
  • Tree-based permission management (ACL) with inheritance support
  • Sophisticated import/export framework (profiles, filters, mapping, projections, scheduling, deployment... basically everything!)
  • CMS Page Builder: Create compelling content that drives sales. No coding required thanks to a powerful WYSIWYG editor using the revolutionary CSS grid system
  • Blog, forum, polls, custom pages & HTML content etc.
  • CMS Menu Builder: visual manager for all kinds of menus. Modify existing menus or create your own and place them anywhere you want.
  • Modern, clean, SEO-optimized and fully responsive Bootstrap-based theme
  • Support for hierarchical SEO slugs, e.g.: samsung/galaxy/s22/32gb/white
  • Trusted Shops pre-certification and full EU-GDPR compliance
  • 100% compliant with German law
  • Sales-, Customer- & Inventory Management
  • Comprehensive CRM features
  • Powerful layered shop navigation
  • Numerous payment and shipping providers and options
  • Wallet: allows full or partial payment of orders via credit account
  • TinyImage: achieves ultra-high image compression rates (up to 80%!) and enables WebP support
  • Preview Mode: virtually test themes and stores more easily
  • RESTful WebApi (coming soon)

 

Getting Started

System requirements

Supported operating systems

  • Windows 10 (or higher) / Windows Server 2012 R2 (or higher)
  • Ubuntu 14.04+
  • Debian 11+
  • Mac OS X 10.11+

Supported database systems

  • Microsoft SQL Server 2008 Express (or higher)
  • MySQL 8.0+
  • PostgreSQL 11+
  • SQLite 3.31+

Upgrade from Smartstore.NET 4.2

Smartstore 5 is a port of Smartstore.NET 4 - based on the classic .NET Framework 4.7.2 – to the new ASP.NET Core 7 platform. Smartstore instances based on classic ASP.NET MVC can be upgraded seamlessly. To upgrade, all you need to do is replace the application files on your server - except for the App_Data directory - and all your data will automatically be transferred to the new system. See the documentation for detailed information on installing or upgrading your store.

:information_source: Upgrading from versions older than 4.2 is not possible. Therefore, you should migrate Smartstore.NET to version 4.2 first and then upgrade to Smartstore 5.

Visual Studio

  • Clone the repository using the command git clone https://github.com/smartstore/Smartstore.git and checkout the main branch.
  • Download Visual Studio 2022 (any edition) from https://www.visualstudio.com/downloads/
  • Open Smartstore.sln and wait for Visual Studio to restore all NuGet packages
  • Make sure Smartstore.Web is the startup project and run it

Repository Structure

  • Smartstore contains common low-level application-agnostic stuff like bootstrapper, modularity engine, caching, pub/sub, imaging, type conversion, IO, templating, scheduling, various utilities, common extension methods etc.
  • Smartstore.Data contains database providers
  • Smartstore.Core contains application specific modules like catalog, checkout, identity, security, localization, logging, messaging, rules engine, search engine, theme engine, migrations etc.
  • Smartstore.Web.Common contains common web features like custom MVC infrastructure, bundling, TagHelpers, HtmlHelpers etc.
  • Smartstore.Modules contains all module/plugin projects
  • Smartstore.Web is the entry host project that contains controllers, model classes, themes, static assets etc.

 

Build Smartstore

Option 1 - by publishing the entry host project

  1. Open the Smartstore solution in Visual Studio 2022
  2. Use Release configuration
  3. (Re)build the solution
  4. Publish host project Smartstore.Web

Option 2 - by running a build script

Run the build script corresponding to your target platform in the build directory: build.{Platform}.cmd. The resulting build will be placed in the build/artifacts/Community.{Version}.{Platform} directory. A zip archive in build/artifacts/ is created automatically.

By default, the build script produces a platform-specific, self-contained application that includes the ASP.NET runtime and libraries, the Smartstore application and its dependencies. You can run it on any machine that doesn't have the .NET runtime installed.

Smartstore uses Nuke (https://nuke.build/) as its build automation solution, which makes it easy to customize the build process by editing src/Smartstore.Build/Smartstore.Build/Build.cs.

About the "src/Smartstore.Web/Modules" directory

While building the solution, all modules in src/Smartstore.Modules/ are detected, compiled and placed in the src/Smartstore.Web/Modules/ directory. The application runtime uses this directory as a source from which modules are loaded dynamically. During development, however, the "Modules" directory is irrelevant. You can safely delete it at any time.

Creating Docker images

To create a Docker image, run build/dockerize.{Platform}[.nobuild].sh.

dockerize.linux.sh

Creates a Debian Linux base image including the complete ASP.NET runtime, builds the solution and publishes a framework-dependent application inside the Linux container. It also installs the native wkhtmltopdf library needed to generate PDF files.

dockerize.linux.nobuild.sh

Much faster, but requires that the application has already been built and is located in build/artifacts/Community.{Version}.linux-x64. Creates a Debian Linux base image with only the ASP.NET runtime dependencies and copies the build artifact. It also installs the native wkhtmltopdf library needed to generate PDF files.

dockerize.windows.nobuild.sh

Creates a Windows Nano Server base image with only the ASP.NET runtime dependencies and copies the build artifact. Requires that the application has already been built and is located in build/artifacts/Community.{Version}.win-x64. It also requires that the Docker engine is running a Windows image.

Creating Docker containers

To create a ready-to-run Docker container with a database server run compose.{DbSystem}.sh.

compose.mysql.sh

Creates a composite Docker container containing the smartstore application image and the latest MySql image.

compose.sqlserver.sh

Creates a composite Docker container containing the smartstore application image and the latest MS SQL Server image.

 

Try it online

We have set up a live online demo for you to test Smartstore without a local installation. Get a first impression and test all available features in the frontend and backend. Please note that the backend demo is shared and other testers can modify data at the same time.

 

License

Smartstore Community Edition is released under the AGPL license.

Add a star to our new repository to stay up-to-date, get involved or just watch how we're doing. Learn about the latest developments, actively participate and don't miss out on new releases.