Lite-Shop
CRM for a footwear business selling wholesale, retail and through resellers: orders, size-level stock, made-to-order production, shipping and customer messaging — with the routine automated.
- 5years in production
- 330+commits
- 44API controllers
- 3UI languages
About the project
Managers handle contacts, the catalog, stock, orders and promotions in the back office, while dropshippers and resellers work through a web view inside a messenger bot: they reserve stock, place orders and check their balance.
The system takes care of the routine: it creates Nova Poshta waybills, sends customers tracking updates, syncs the catalog with Google Sheets and auto-confirms orders. The UI is available in three languages.
What the system does
-
Orders
Wholesale and retail orders with a sales channel (TikTok, Instagram, website, Facebook), payment status, order merging and filters.
-
Made-to-order
A separate fulfillment type with lead times, pre-payment settings and confirmation for low pre-payments.
-
Reseller reservations
Size-level reservations via the bot with automatic expiry, cancellation and refunds.
-
Nova Poshta shipping
Waybills generated from orders, city and branch lookup, automatic tracking messages.
-
Customer messaging
One-off and bulk messages via SmartSender, back-in-stock alerts for a size.
-
Reseller finances
Transactions, balance, payout requests and per-contact PDF reports.
-
Catalog & stock
Products, categories, size charts and stock with two-way Google Sheets sync.
-
Promotions
Promotion types and discounts applied to orders.
-
Analytics
Dashboard for sales, statuses, wholesale / retail / made-to-order, stock and client rating.
How it is built
-
Modular monolith
An ASP.NET Core host with Retailing, Dropshipping and Supporting domain modules — each with its own Domain and Infrastructure projects.
-
Security & roles
A custom JWT handler with User, Administrator and Bot roles; separate back-office and bot areas guarded in Vue Router.
-
Versioned API
API v1–v3: api/v{n} for the bot and public endpoints, ui/v{n} for the back office, a generic EntityController for CRUD and search.
-
Outbox & background jobs
A PostgreSQL outbox table plus Hangfire: reservation expiry every minute, order auto-confirmation, waybill tracking, Google Sheets sync.
-
Tooling
A separate SyncPrice app imports prices, descriptions, images and stock from Google Sheets.
External services
- Nova PoshtaWaybills, city and branch directories, shipment tracking.
- SmartSenderCustomer messages through messenger bots.
- Google SheetsTwo-way sync of products and stock.
- File conversionHTML → PDF for transaction reports.
Project stack
Backend
- .NET 8
- ASP.NET Core
- EF Core
- MediatR
- AutoMapper
- Hangfire
- Swagger
Frontend
- Vue 3
- Vue Router
- Vuex
- Bootstrap
- ApexCharts
Data
- PostgreSQL
- Npgsql
Infrastructure
- Docker
- Azure Pipelines
Have an idea or a project?
Open to collaboration on business systems, CRM and integrations. Drop me a line — let's talk.