Enterprise Marketplace

Project Specification

  • Warehouse management system with multiple location ability and a 3rd Party Logistics distribution billing/reporting portal.
  • Several options of integration for Drop Ship Partners, with product and inventory updating for each option.
  • Marketplace style products, with multiple variants per product, and multiple sellers per variant, including the warehouses and/or drop ship partners in competition with one another.
  • Outward Channel integrations to front end frameworks and 3rd Party Marketplaces.

Application Design

Click headers to expand/collapse

General Application Design Principles

Microservices...to a point. Never a monolith, but let scale justify a new application service. I don't necessarily agree with the argument that monoliths should be the initial design for startup apps, but understand the reasons and err in that direction.
Data is generally grouped for the entire app in a single instance. Data is not combined with other apps, but neither is it split out to a single concern. My reasons for this are the minimum financial and management costs associated with provisioning a database exceed the benefits from reliability gains.
Use technologies that minimize ongoing maintenance of the application. This generally means heavy use of serverless technologies. The reasoning behind this is that maintenance typically exceeds development in terms of cost and time, so the additional costs for not managing infrastructure are justfied at small to medium scale.
Some cloud-specific technologies are used, but generally cloud-agnostic technologies are preferred. This generally means heavy use of containers.
Continuous Integration & Deployment is used in all cases. In nearly all cases, the flow is from GitHub to Azure DevOps/VSTS to the deployment target.

Data

Persistence

Azure SQL
Technology:

Azure SQL

Function:

House all of the data for the app

Back-End

API

ASP.NET Core / C#Entity Framework Core / C#Kubernetes / DockerAzure DevOps
Technology:

ASP.NET Core / C#

Technology:

Entity Framework Core / C#

Deployment:

Kubernetes / Docker

Deployment:

Azure DevOps

Function:

Provide data to the front-end, allowing access and modification based on many access scopes

Logistics

Azure Functions / C#Kubernetes / DockerAzure DevOps
Technology:

Azure Functions / C#

Deployment:

Kubernetes / Docker

Deployment:

Azure DevOps

Function:

CRON service to do several data and maintenance tasks such as aggregation of Logistics Partner billing data

Sellers

Azure Functions / C#Kubernetes / DockerAzure DevOps
Technology:

Azure Functions / C#

Deployment:

Kubernetes / Docker

Deployment:

Azure DevOps

Function:

Handle all of the inward product and inventory data integrations from drop shippers

Sellers EDI

Azure Logic Apps
Technology:

Azure Logic Apps

Deployment:

Serverless (Consumption)

Function:

Handle all EDI communication to/from Sellers

Marketplace

Azure Functions / C#Kubernetes / DockerAzure DevOps
Technology:

Azure Functions / C#

Deployment:

Kubernetes / Docker

Deployment:

Azure DevOps

Function:

Handle changes from the seller module, creating things like new products and variants when necessary

Marketplace Channels

Azure Functions / C#Kubernetes / DockerAzure DevOps
Technology:

Azure Functions / C#

Deployment:

Kubernetes / Docker

Deployment:

Azure DevOps

Note:

This is actually several deployments, but all are handled similarly

Open Source:

Contributions made to SDKs like ShopifySharp

Function:

Handle all of the outward communication to the various sales channels (Shopify, Amazon, etc) for the marketplace products

Front-End

Admin UI

React / Typescript JSKubernetes / DockerAzure DevOpsGoogle Firebase
Technology:

React / Typescript JS

Deployment:

Kubernetes / Docker

Deployment:

Azure DevOps

Authorization:

Google Firebase

Function:

Provide an Authenticated portal for several different types of parties to log in and receive an experience custom to their user