Image
Keep Calm and Save Ukraine
Logo
Workarrow
Back

Dekoparts

High-loaded B2B e-commerce website with a multi-million stock of unique auto parts from multiple manufacturers, an advanced loyalty program for vendors, powerful administration mechanisms for effective stock management, and auto-scalable infrastructure

Background image

Project description

In a few months, our team has developed, tested, and launched a modern high-loaded e-commerce product that allows auto dealers, repairs, and other automotive businesses to order large numbers of auto parts and get discounts on bulk purchases because of a comprehensive loyalty program with advanced individual discounts depending on brand, manufacturer, amount, terms of delivery, logistics, etc. The new platform has replaced the outdated system the company has used in the past. The platform consists of the end-user e-commerce website, admin panel for managing clients, requests, orders, stock, pricelists, and discount groups, back-end core managing business logic and communication between user interfaces and database, and cloud infrastructure.

Industry:Ecommerce, Automotive
Platforms:Web
Role:Software developer, IT consultant
Tech Stack:Vendure.io, Node.js, Nest.js, PostgreSQL, GraphQL, Elasticsearch, Angular.js, Vue.js, Postmarkapp, AWS (RDS, EC2, S3, ECS, ECR, VPC, ELB), Hetzner Cloud
rock

Project team

  • 2 Developer
  • 1 Designer
  • 1 PM
  • 1 QA engineer
  • 1 DevOps
Banner image

Problem introduction

The client had reached out to us with an old website that was still operating as an online store of a big distributor selling auto parts to business partners directly from Asian and European factories.The website was based on a proprietary solution including two large MS SQL databases, MS and MEM servers. The website stopped receiving product updates due to a license key loss because of a system failure and it was impossible to restore access because the software was deprecated and had no support. The initial request was at least to rescue the existing data: hack the db, get remote access to replicate it, update the replica with new data, and connect to the existing e-commerce solution in order to save the business from an outage. All-or-nothing plan: if we succeed, we can continue updates. We have managed to save both 40GB and 10GB databases, update them with new arrivals, and connect to the old website to keep the business afloat. Still, the databases were rather flaky, having duplicated and broken records, but it was an operable solution and the first critical point has been passed. The databases contained 21M+ items, whereas the relevant number as per Customer estimates had to be between 1-2M. At the same time, the e-commerce website was old-fashioned, slow, and German only. The next goal was to develop a new e-commerce website quickly, add custom functionality, iron out the database problems, and prepare sufficient cloud infrastructure to replace the old store.

Main goals

  • Setup database replicas and ingest manufacturers, customers, and product data to ensure the data is preserved safely independently from the legacy solution
  • Develop a new back-end e-commerce engine as per customer needs able to replace the existing proprietary system quickly
  • Provide a convenient and functional e-commerce website, with the ability to quickly search for auto parts by unique part codes and add products to the cart in English, German, and Korean
  • Provide the admin panel for just trivial e-commerce platform management in a fast and convenient way taking into account large catalog and complex pricing system
  • Configure respective cloud infrastructure as per project needs

Tech Challenges

The project was a big unsolvable puzzle we split into smaller tasks, prioritized, and resolved gradually. We selected Vendure.io since it’s a modern headless framework for rapid e-commerce setup with the possibility to develop custom UI and extend existing functionality with Node.js and GQL. Next, we rearranged the databases: merged them together, converted the data format, excluded duplicates and broken data, migrated to Postgre. The MVP was soft-launched, and the old version temporarily operated in parallel for beta-testing purposes.

The next challenge was to build richer functionality and update the database with fresh data – manufacturers, parts, price lists, discount schemes. The new functionality included a discount system, multilingual support, pricing import and order export automation. The most difficult was to replicate the discount system and develop price list automation. The same auto parts are manufactured in different factories and locations and can have fully-fungible analogs from other brands, and each manufacturer provides cumulative discount ranges that depend on how many items the company purchases on a regular basis. So, prior to building this functionality, we collected all requirements to be sure we were on the same page.

Regarding import automation, every 3 months the Customer receives files with actual products and new prices from suppliers. The files contain millions of lines, and it was necessary to parse these files using multithreading and queues and update the product catalog diff efficiently, handle processing errors, and shorten update times. After data ingestion, the product catalog increased to 10M unique parts causing serious performance degradation. We conducted load testing sessions optimizing the business logic, db structure, indexes, SQL queries, API, GQL schemas, UI, scrips, infrastructure. After 3 weeks of meticulous work, we achieved the desired results. Now the new site has completely replaced the legacy version.

Image

Core Functionality:

  • Ability to sign up as an existing partner or to onboard as a new partner
  • Ability to find auto parts using factory codes using the search bar and add them to the cart
  • Ability to manage amounts in the cart and see preliminary estimated pricing
  • Ability to send order requests to the manager and get partner discounts and the best propositions
  • Admin order and user management functionality
  • Admin ability to import price lists and update product catalog, pricing, and discounts
imgimgimgimgimg

Solution

We developed a modern B2B online store that replaced the existing solution to exclude the high probability of failure and long-term outages. A new solution is built using the modern e-commerce framework Vendure.io, Node.js, Nest.js, PostgreSQL, and GraphQL. User interfaces are built using Angular.js and Vue.js. The new solution was implemented without any data loss – all the valid and usable data were carefully backed up, filtered out, and copied out to the new platform. We also reconstructed complex discount logic from the original platform, automated regular data imports, and developed custom admin instruments per customer request including order exports in required formats. Since the solution operates with a large catalog we have conducted a series of load tests to configure the respective infrastructure with the ability to auto-scale.

Result

  • Transformation from a legacy system to a new technology platform.
  • Complex migration of the platform data and customer database
  • A modern landing page and optimized website
  • Desktop- and mobile-friendly solution
  • Multilingual support
  • Comprehensive implementation of an advanced loyalty program
  • Light-weight and fast-responding admin panel
  • Reliable auto-scalable infrastructure able to withstand high loads due to massive product updates and lots of background processing when managing huge inventory

Case Studies

More cases
More cases

Let’s talk!

Fill out our form below or send us an email

Your Name*

Company

Your Phone*

Your E-mail*

Project description*

phone-icon