Partner
ADG Sales GmbH
Case study11
An integrated platform for brand experience, dealer operations, vehicle commerce and aftersales

Partner
ADG Sales GmbH
Industry
Automotive Industry
Core technologies
React · Fastify · MongoDB & MySQL
At a glance
DuoByte built a platform for ADG Sales GmbH that connects the public brand presence for Dongfeng, Voyah and Venucia with a protected B2B portal. Dealers buy vehicles directly from stock, the ADG team runs the dealer network, purchasing, logistics and aftersales, and every purchase becomes a sales contract in the existing business system.
Our role: DuoByte built the website and portal, implemented the integration with the existing MySQL company databases, and is responsible for deploying and operating the platform.
Project work
How the project came together: from the context and requirements through implementation to where it stands today.
Context
ADG Sales distributes Dongfeng, Voyah and Venucia vehicles through a network of retail partners. Beyond sales, daily operations include purchasing, vehicle logistics and aftersales with warranty and support cases.
Vehicles, sales contracts and invoices live in an existing business system on MySQL, split across several company databases, including separate ones for sales and aftersales. That system remains the record for stock and accounting, so the new platform had to connect to it rather than replace it.
Three groups use the platform: prospects and potential partners on the public website, dealers and their staff in the Dealer Box, and ADG's departments in the Distribution Box. Freight forwarders receive a secure link for individual jobs and need no account of their own.
Challenge
A single vehicle purchase touches several systems at once. The vehicle must still be available, the dealer needs a verified distribution right for the brand and a customer number in the right company database, and the sales contract and order line must be created there consistently. One cart can contain vehicles that belong to different companies.
On top of that comes the range of workflows: dealer applications with review and approval, time-limited distribution rights, payment checks, transports and pickups with external forwarders, vehicle intake, purchasing price lists, and warranty claims that are filed with the manufacturer. Every department needs different permissions, and dealers should manage their own staff.
The public website has to work in ten languages, provide model information and price lists for every market, and lead prospects to the right dealer.
Solution
The public website presents brands and models in ten languages. Each model has a PDF price list in every one of those languages, a dealer finder shows sales and service partners on a map, and the partner section guides interested businesses to the application form.
In the Dealer Box, dealers filter in-stock, inbound and factory-order vehicles, add them to a cart and confirm the purchase with their PIN. The system generates the purchase order and order confirmation as PDFs and keeps open payments and pickups in view. In the aftersales area, dealers file warranty claims with photos, part and labor codes, open support tickets and access shared documents.
The Distribution Box brings together the work of ADG's departments:
Implementation
The frontend is a React application built with TypeScript, Vite, TanStack Query and Tailwind CSS. The backend runs on Fastify, and every endpoint is described with TypeBox schemas for request and response. These produce an OpenAPI specification from which the frontend generates its typed API client, so interface changes surface at compile time.
The platform's own data, such as dealers, orders, logistics jobs and warranty cases, lives in MongoDB. The business system is connected through a dedicated connection pool per company database. During checkout the backend groups vehicles by company and creates sales contracts and order lines for each company in one transaction; if any step fails, everything is rolled back. Master data syncs, for dealers and forwarders for example, are designed so that an error on the MySQL side never blocks work in the portal.
Permissions follow a matrix of domains, groups and individual rights that are assigned to positions within departments. Every write request is logged automatically with a before and after comparison. Puppeteer renders contracts, transport orders and the model price lists as PDFs on the server, and documents are kept on SFTP storage. Scheduled jobs check expiring distribution rights, create proforma and final invoices and send reminders.
The platform runs in Docker containers behind Caddy with automatic TLS, with separate development and production environments. GitHub Actions checks every push with linting, type checking and a dependency security audit before deploying automatically. The Vitest suite runs alongside, including a PDF rendering test with a real Chromium instance. The platform database is backed up daily.
Outcome
Dealers buy vehicles on their own in the portal, and every purchase becomes a sales contract in the business system. The ADG team handles applications, payments, transports and warranty cases in the same system, with a traceable history for every change.
The platform is in production and is being extended continuously, most recently with a dealer map on the public website, mobile access to technical support and supplier management in purchasing.
Product & context
Selected views show how the system was conceived and implemented within its domain context.


System architecture
Technologies were combined to suit the task, operating model and long-term maintainability.
Related services
Protected portals for customers, dealers and members: orders, bookings and documents as self-service, with clear roles and permissions.
Learn moreAPI integrations, ERP and accounting connections, PDF imports and automated jobs that move data reliably between your systems.
Learn moreKeep exploring
Next case study

Your project
Tell us what your system needs to do. We bring structure to requirements, architecture and delivery.