Case Study
Smart Organic Custom Shopify app
Smart Organic is a Bulgarian producer and distributor of organic and healthy foods. BettrFood is the company's online commerce platform, through which products are sold to end customers via Shopify, while warehousing, logistics and accounting are managed in Microsoft Dynamics NAV.
The Project
A middleware application that automates data exchange between the client's ERP system (Microsoft Dynamics NAV) and their online store on Shopify. The goal is to keep inventory, pricing and orders in sync at all times, without any manual work from the operations team.
Core functionality
- Product synchronization — items are pulled from NAV via OData Web Services and the corresponding products and variants are created or updated in Shopify.
- Price and stock updates — a scheduled Hangfire job fetches current prices and quantities from NAV and pushes them to Shopify. Pricing is handled by a dedicated
ShopifyPriceCalculator that accounts for VAT, promo prices and rounding rules. - Order transfer — a Shopify webhook fires on every new order, which is transformed into the NAV format and posted as a Sales Order in the ERP, with per-order status tracking in a dedicated Order Transfers module.
- Admin panel (Blazor Server) — configuration of NAV and Shopify credentials, real-time log viewer, manual job triggering, user and role management via ASP.NET Identity.
- Task scheduling — configurable intervals per job (minutes / hours), automatic cron expression generation and a built-in Hangfire dashboard.
- Resilience — Polly retry policies for flaky NAV/Shopify calls, a locking mechanism that prevents the same job from running in parallel, and automatic cleanup of old logs.
Architecture
- Backend: .NET 8 and ASP.NET Core, layered architecture with separate services for NAV, Shopify, configuration, logging and order transfer.
- UI: Blazor Server with SignalR and Bootstrap.
- Database: PostgreSQL via Entity Framework Core, with schema migrations managed by FluentMigrator.
- Job scheduler: Hangfire on PostgreSQL storage.
- External integrations: ShopifySharp for the Shopify Admin API, RestSharp for NAV OData Web Services.
- Authentication: ASP.NET Core Identity with roles and cookie authentication.
Outcome for the client
Full automation of the warehouse → online store → order → ERP flow: no more manual data entry, no more discrepancies between the real stock in the warehouse and what customers see online, and centralized control over the entire integration from a single web panel.
Technologies
.NET 8
ASP.NET Core
Blazor Server
C#
Entity Framework Core 8
PostgreSQL (Npgsql)- Hangfire (background jobs)
- FluentMigrator
ASP.NET Core Identity- SignalR
ShopifySharp
Shopify Admin REST/GraphQL API- Microsoft Dynamics NAV OData Web Services
- RestSharp
- Polly (retry)
- SixLabors.ImageSharp
Bootstrap