VirtoCommerce Platform repository
# Virto Commerce Platform - Extensible Ecommerce Applications

[![Share on Facebook](https://img.shields.io/badge/facebook--blue.svg?style=social&label=Share&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNjYuODkzcHgiIGhlaWdodD0iMjY2Ljg5NXB4IiB2aWV3Qm94PSIwIDAgMjY2Ljg5MyAyNjYuODk1IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNjYuODkzIDI2Ni44OTUiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGlkPSJCbHVlXzFfIiBmaWxsPSIjM0M1QTk5IiBkPSJNMjQ4LjA4MiwyNjIuMzA3YzcuODU0LDAsMTQuMjIzLTYuMzY5LDE0LjIyMy0xNC4yMjVWMTguODEyYzAtNy44NTctNi4zNjgtMTQuMjI0LTE0LjIyMy0xNC4yMjRIMTguODEyYy03Ljg1NywwLTE0LjIyNCw2LjM2Ny0xNC4yMjQsMTQuMjI0djIyOS4yN2MwLDcuODU1LDYuMzY2LDE0LjIyNSwxNC4yMjQsMTQuMjI1SDI0OC4wODJ6Ii8%2BPHBhdGggaWQ9ImYiIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xODIuNDA5LDI2Mi4zMDd2LTk5LjgwM2gzMy40OTlsNS4wMTYtMzguODk1aC0zOC41MTVWOTguNzc3YzAtMTEuMjYxLDMuMTI3LTE4LjkzNSwxOS4yNzUtMTguOTM1bDIwLjU5Ni0wLjAwOVY0NS4wNDVjLTMuNTYyLTAuNDc0LTE1Ljc4OC0xLjUzMy0zMC4wMTItMS41MzNjLTI5LjY5NSwwLTUwLjAyNSwxOC4xMjYtNTAuMDI1LDUxLjQxM3YyOC42ODRoLTMzLjU4NXYzOC44OTVoMzMuNTg1djk5LjgwM0gxODIuNDA5eiIvPjwvc3ZnPg%3D%3D)](https://www.facebook.com/sharer.php?u=https://virtocommerce.com)&nbsp;[![Tweet](https://img.shields.io/twitter/url/https/virtocommerce.com.svg?style=social)](https://twitter.com/intent/tweet?text=%23VirtoCommerce%20puts%20the%20best%20of%20MS%20Azure%20Cloud%2C%20open%20source%20.Net%20code%20and%20agile%20development%20in%20a%20single%20enterprise%20%23ecommerce%20platform.) [![Latest release](https://img.shields.io/github/release/VirtoCommerce/vc-platform.svg)](https://github.com/VirtoCommerce/vc-platform/releases/latest) [![Total downloads](https://img.shields.io/github/downloads/VirtoCommerce/vc-platform/total.svg?colorB=007ec6)](https://github.com/VirtoCommerce/vc-platform/releases) [![License](https://img.shields.io/badge/license-VC%20OSL-blue.svg)](https://virtocommerce.com/open-source-license)

[![CI status](https://github.com/VirtoCommerce/vc-platform/workflows/Platform%20CI/badge.svg?branch=dev)](https://github.com/VirtoCommerce/vc-platform/actions?query=workflow%3A"Platform+CI") [![Quality gate](https://sonarcloud.io/api/project_badges/measure?project=VirtoCommerce_vc-platform&metric=alert_status&branch=dev)](https://sonarcloud.io/dashboard?id=VirtoCommerce_vc-platform) [![Reliability rating](https://sonarcloud.io/api/project_badges/measure?project=VirtoCommerce_vc-platform&metric=reliability_rating&branch=dev)](https://sonarcloud.io/dashboard?id=VirtoCommerce_vc-platform) [![Security rating](https://sonarcloud.io/api/project_badges/measure?project=VirtoCommerce_vc-platform&metric=security_rating&branch=dev)](https://sonarcloud.io/dashboard?id=VirtoCommerce_vc-platform) [![Sqale rating](https://sonarcloud.io/api/project_badges/measure?project=VirtoCommerce_vc-platform&metric=sqale_rating&branch=dev)](https://sonarcloud.io/dashboard?id=VirtoCommerce_vc-platform) [![Lines of code](https://sonarcloud.io/api/project_badges/measure?project=VirtoCommerce_vc-platform&metric=ncloc&branch=dev)](https://sonarcloud.io/dashboard?id=VirtoCommerce_vc-platform)&emsp;

[![Documentation](https://img.shields.io/badge/docs-read-brightgreen.svg)](https://virtocommerce.com/docs)&nbsp;[![Discourse topics](https://img.shields.io/discourse/topics?label=community&logo=community&server=http%3A%2F%2Fcommunity.virtocommerce.com)](https://community.virtocommerce.com) [![Contributors](https://img.shields.io/github/contributors/VirtoCommerce/vc-platform.svg)](https://github.com/VirtoCommerce/vc-platform/graphs/contributors)

[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FVirtoCommerce%2Fvc-platform%2Fmaster%2Fazuredeploy.json)

Virto Commerce is an open-source platform for building extensible ecommerce applications. This includes complex digital commerce solutions for B2B, B2C, or B2B2C businesses, [marketplaces](https://virtocommerce.com/solutions/marketplace), and derived SaaS commerce platforms.

Virto Commerce architecture is based on such principles as Microservices, API-first, Cloud-native, Headless, and Advanced Extensibility.

## Principles
The main principle is to help the development teams focus on the implementation of business features without worrying about **CLEAN ARCHITECTURE**.

* **[MICROSERVICES](https://virtocommerce.com/microservices)**: Every application is built from headless microservices (modules). Applications and microservices are not limited to composite applications, they can also be used for building any other application and hence are functionally independent. 
* **[API-FIRST](https://virtocommerce.com/api-ecommerce)**: Ecommerce service with the right API design. All business logic is accessible via API, either Rest or GraphQL. 
* **[CLOUD NATIVE](https://virtocommerce.com/cloud-ecommerce)**: Ecommerce service is delivered in line with the SaaS model. This adds significant benefits for your business: 
    1. *On-demand*: Use the ecommerce service as a whole or its separate components as needed.
    1. *Scalability*: In the cloud, it can be easily scaled to support peak demand and long-term business growth. 
    1. *Reliability*: Leverage a solution deployed across multiple data centers and availability zones to maximize uptime and reduce potential revenue losses.
* **[HEADLESS](https://virtocommerce.com/headless-ecommerce)**: Allows an enterprise to support omnichannel journeys across traditional and digital touchpoints as well as new business models.
* **EXTENSIBILITY AND [COMPOSABILITY](https://virtocommerce.com/composable-ecommerce)**: API model, persistence model, and business logic can be extended as needed without deploying or re-deploying the solution. This provides superior business agility and keeps you and your service up to date.

## Architecture Overview
The following chart illustrates the high-level architecture and main areas of the Virto Commerce solutions:

![Virto Commerce Architecture Reference](docs/media/vc-architecture-reference.png)

**[Virto Commerce Platform](https://virtocommerce.com/b2b-ecommerce-platform)**: Launches the ecommerce applications in the public, hybrid, and private [cloud](https://virtocommerce.com/virto-commerce-cloud) environments. 

**Commerce Applications**: API-based, modular and extensible logical set of one or more headless microservices (modules) with focus on the implementation of the business feature, such as Digital Catalog, Order Management, Content Management, Marketing, etc.

**Custom Extensions**: Virto Commerce Module that enables extending API model, persistent model, business logic, and admin UI withing the commerce applications.

**External Commerce Applications**: Third party ecommerce applications and services. 

**Touchpoints**: Sell your products on the website, through mobile application, chatbot or any third party services: marketplace, dropshipping, or any other option you create. Virto Commerce Storefront Kit allows you to manage various brands and stores under the same environment and with the same features.

**Admin SPA**: Virto Commerce has an extensible and intuitive admin user interface, which allows you to manage data within your commerce applications across all channels.

**[Integration](https://virtocommerce.com/integrations/key-ecommerce-integrations) middleware**: Asynchronous integration middleware for declarative integration with non-real-time and legacy services.

## Introduction to Virto Commerce
These Virto Commerce docs will help you in learning and using the Virto Commerce platform, from your local solution to optimizing complex enterprise builds: 

* [Quick Start](https://virtocommerce.com/docs/latest/vc-quickstart/)
* [User Guide](https://virtocommerce.com/docs/latest/user-guide/getting-started/)
* [What’s New: News Digest](https://www.virtocommerce.org/c/news-digest/15)

## Technology Stack Used

In our work, we make every effort to always use advanced technologies. We picked the techs below as a result of our extensive experience in working with Microsoft products:

* .NET Core and ASP.NET Core as base platform
* EF Core as primary ORM
* ASP.NET Core Identity for authentication and authorization
* OpenIddict for OAuth authentication
* WebPack as primary design/runtime bundler and minifier
* Swashbuckle.AspNetCore.SwaggerGen for Swagger docs and UI
* SignalR Core for push notifications
* AngularJS as a primary framework for SPA
* HangFire for running background tasks

## References
* Deployment:
  * [Deploying on Windows](docs/getting-started/deploy-from-precompiled-binaries-windows.md)
  * [Deploying on Linux](docs/getting-started/deploy-from-precompiled-binaries-linux.md)
  * [Deploying to Azure](docs/getting-started/deploy-from-precompiled-binaries-azure.md) 
  * [Deploying on MacOS](docs/getting-started/deploy-from-precompiled-binaries-MacOS.md) 
  * [Connecting Storefront to Platform](docs/getting-started/connect-storefront-to-platform-v3.md)
  * [Deploying Platform v3 from source code](docs/developer-guide/deploy-from-source-code.md)
* Virto Commerce Documentation: https://www.virtocommerce.com/docs/latest/
* Home: https://virtocommerce.com
* Youtube Videos: https://www.youtube.com/c/Virtocommerce/videos
* Community: https://www.virtocommerce.org

## Comparison with 2.x

In the new version, we changed our primary technology stack to .NET Core for the platform application and all key modules. We also resolved known technical and architecture design issues we had in 2.x: caching, overloaded core module, asynchronous code, platform complexity, extensibility, performance, and authentication.

Besides, we improved the extensibility and unification of the application. The unified architecture and using best practices reduce the training time for developers who are just starting to work with Virto Commerce.

Virto Commerce Platform v3 helps you increase the development speed and significantly reduce time to market.

* [What’s New in VC3](docs/release-information/whats-new.md)
* [Update VC Platform Module from v2.x to v3](docs/release-information/update-to-version-3/update-module-from-platform-2.0-to-version-3.md)

## License

Copyright (c) Virto Solutions LTD. All rights reserved.

Licensed under the Virto Commerce Open Software License (the "License"); you
may not use this file except in compliance with the License. You may
obtain a copy of the License at http://virtocommerce.com/open-source-license

Unless required by applicable law or agreed to in written form, the software
distributed under the License is provided on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
