The client
SDF Group is one of the world's largest agricultural machinery manufacturers, selling tractors across Europe under the Deutz-Fahr, SAME, Lamborghini Trattori, and Hürlimann brands. Its customers are farmers; its channel is a network of national subsidiaries and independent dealers. Between the factory in Treviglio and a farmer in a field in Poland sit a dozen intermediaries - which meant the manufacturer had almost no direct relationship with the people driving its machines.
The brief: put SDF in the farmer's pocket. Let owners register their tractors, find their dealer, receive recalls and promotions, track maintenance - and give SDF's marketing and after-sales teams the controls to run all of it themselves, per brand, per market, per language.
The problem: one product, many faces
The obvious approach - build an app for one brand, then fork it for the next - is how white-label projects die. Every fork doubles the maintenance surface; within a year the forks disagree, and every bug is fixed twice or not at all.
The constraint we set instead: branding, content, and even layout must live in data, not code. One codebase, one release pipeline, any number of branded apps.
What we built
The farmer app (Ionic + Capacitor)
- Tractor registration by VIN - typed, scanned from a QR code, or read straight off the chassis plate with camera OCR, validated against the factory VIN registry
- "My garage" - the owner's machines with model data, maintenance schedules, and service reminders
- Dealer network - nearest-dealer lookup by geodistance, with the farmer's assigned dealer surfaced first
- Campaigns - spare-part and machine promotions, recall notices targeted by VIN list, extended-warranty enrolment with photo upload
- Live telemetry - a Bluetooth connection to the tractor's telematics module streaming engine speed, torque, coolant temperature, and fuel rate into in-app gauges - no cell signal required
- News, videos, and surveys - localized per market, in 10 languages
The back-office CMS (Angular)
The larger half of the system by code volume. SDF's own staff - not developers - run the platform day to day: a campaign builder with a draft → subsidiary-approval → published workflow, recall management, news and video publishing, survey authoring, email and push templates, per-market privacy-policy versioning, and reporting with CSV export for every market and dealer.
The API (Node.js)
An Express and MongoDB backend with Redis caching, SMS one-time-password verification, transactional email, and a scheduler running the platform's heartbeat: campaign push notifications firing at nine each morning in the right language for each market, service reminders, staged onboarding emails, and nightly data exports to the client's BI dashboards.
Stack: Ionic + Capacitor + Angular (farmer app) · Angular + Material (CMS) · Node.js + Express + MongoDB + Redis (API) · S3 · Twilio · SendGrid · Firebase push across five app targets · Docker
The white-label architecture
This is the part other teams ask us about. Four decisions made one codebase serve six brands:
- Theming as data. Each branded app reads its primary, accent, background, and text colours plus its logo from an app-setup record at runtime. mySAME and myDeutz-Fahr are the same binary logic wearing different clothes.
- Server-driven home screens. The app's home is a grid of tiles delivered by the API - each tile carries its feature type, colours, position, and a market allow-list. Marketing can reorder a market's home screen without an app release.
- Language and market as first-class models. Every content type is a base entity plus per-language sibling records, and every piece of content declares which markets may see it. Push notifications resolve language from the user's market - 13 markets mapped to 10 locales, automatically.
- One API, many app identities. The backend addresses each branded app and environment as a separately configured push target, so a single service pushes to every brand's iOS and Android apps without cross-contamination.
Talking to a factory: integration without APIs
SDF's enterprise systems exchange data the way large manufacturers actually do: in batch. We built a two-way bridge over S3 - inbound CSV drops from the factory (VIN registries, maintenance schedules) streamed and imported in 50,000-row batches with automatic archiving and error reporting, and a nightly export of denormalized platform data feeding the client's Tableau dashboards. Unglamorous, bulletproof, and running untouched for years.
Keeping it alive for seven years
A consumer app that lives seven years crosses more platform churn than most products ever see: new iOS privacy rules, Android permission overhauls, deprecated plugins, retired social-login SDKs. The platform absorbed all of it - including a full modernization from Angular 8 and Capacitor 2 to Angular 19 and Capacitor 7, carried out on a live production app without a rewrite.
That longevity is the real credential. Anyone can demo an app. Keeping one healthy in production across seven years of platform change, for a manufacturer whose brand is on every screen, is what enterprise mobile work actually is.
Frequently asked questions
What is white-label app development?
Building one product that ships under multiple brands. Done properly, the branding - colours, logo, features, even the home screen layout - lives in data rather than code, so a new branded app is a configuration exercise, not a fork. That is how one codebase served both mySAME and myDeutz-Fahr for SDF Group.
How do you support 13 markets and 10 languages in one app?
Treat language and market as first-class data. Every content type - campaigns, news, surveys, notifications, even home-screen tiles - is stored as a base entity plus per-language translations, and every item carries a market allow-list. Push notifications resolve the user's language from their market automatically.
Can Lumetha take over or extend an existing enterprise mobile app?
Yes - this platform is proof. Our engineers carried it across seven years of iOS and Android platform changes, including a full modernization from Angular 8 and Capacitor 2 to Angular 19 and Capacitor 7 while the app kept shipping.
What does a platform like this involve beyond the mobile app?
The visible app is roughly a third of the system. Behind it sit a REST API with scheduled jobs, caching, and push infrastructure, a back-office CMS where marketing and after-sales teams run campaigns and content, and batch integrations with the manufacturer's enterprise systems and BI tooling.
Need one product to wear many brands?
Lumetha builds and runs white-label platforms for manufacturers and agencies: one codebase, data-driven branding, and a team that stays for the years after launch. Start with a two-week paid pilot on your real roadmap.
Book a 30-minute call →Related: white-label development for agencies · how we modernized this app from Angular 8 to 19 · streaming live tractor telemetry over Bluetooth LE · how one fractional CTO shipped a fleet-ops platform in six months
lumetha