Case study
Smart Organic – aplikacja Shopify na zamówienie
Smart Organic to bułgarski producent i dystrybutor żywności ekologicznej i zdrowej. BettrFood to internetowa platforma handlowa firmy, przez którą produkty sprzedawane są klientom końcowym w Shopify, natomiast magazynowanie, logistyka i księgowość prowadzone są w Microsoft Dynamics NAV.
Projekt
Aplikacja pośrednicząca, która automatyzuje wymianę danych między systemem ERP klienta (Microsoft Dynamics NAV) a jego sklepem internetowym na Shopify. Celem jest utrzymywanie stanów magazynowych, cen i zamówień w stałej synchronizacji, bez żadnej ręcznej pracy zespołu operacyjnego.
Kluczowe funkcje
- Synchronizacja produktów - towary pobierane są z NAV przez OData Web Services, a odpowiadające im produkty i warianty są tworzone lub aktualizowane w Shopify.
- Aktualizacja cen i stanów - zaplanowane zadanie Hangfire pobiera bieżące ceny i ilości z NAV i wysyła je do Shopify. Za wycenę odpowiada dedykowany
ShopifyPriceCalculator, który uwzględnia VAT, ceny promocyjne i zasady zaokrąglania. - Przekazywanie zamówień - webhook Shopify uruchamia się przy każdym nowym zamówieniu, które jest przekształcane do formatu NAV i księgowane w ERP jako Sales Order, ze śledzeniem statusu każdego zamówienia w dedykowanym module Order Transfers.
- Panel administracyjny (Blazor Server) - konfiguracja danych dostępowych do NAV i Shopify, podgląd logów w czasie rzeczywistym, ręczne uruchamianie zadań, zarządzanie użytkownikami i rolami przez ASP.NET Identity.
- Harmonogramowanie zadań - konfigurowalne interwały dla każdego zadania (minuty / godziny), automatyczne generowanie wyrażeń cron i wbudowany pulpit Hangfire.
- Odporność - polityki ponawiania Polly dla zawodnych wywołań NAV/Shopify, mechanizm blokad zapobiegający równoległemu uruchomieniu tego samego zadania oraz automatyczne czyszczenie starych logów.
Architektura
- Backend: .NET 8 i ASP.NET Core, architektura warstwowa z osobnymi serwisami dla NAV, Shopify, konfiguracji, logowania i przekazywania zamówień.
- UI: Blazor Server z SignalR i Bootstrap.
- Baza danych: PostgreSQL przez Entity Framework Core, z migracjami schematu zarządzanymi przez FluentMigrator.
- Harmonogram zadań: Hangfire na magazynie PostgreSQL.
- Integracje zewnętrzne: ShopifySharp dla Shopify Admin API, RestSharp dla NAV OData Web Services.
- Uwierzytelnianie: ASP.NET Core Identity z rolami i uwierzytelnianiem cookie.
Rezultat dla klienta
Pełna automatyzacja przepływu magazyn → sklep internetowy → zamówienie → ERP: koniec z ręcznym wprowadzaniem danych, koniec z rozbieżnościami między rzeczywistym stanem w magazynie a tym, co widzą klienci online, oraz scentralizowana kontrola nad całą integracją z jednego panelu webowego.
Technologie
.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