Omoda Denmark




The official digital presence for Omoda's entry into the Danish market — built to introduce the Omoda 5 EV and convert visitors into dealership leads. Delivered as part of a monorepo architecture that lets multiple Omoda market sites share components, rendering logic, and APIs while maintaining independent designs. Umbraco CMS drives all content; the Next.js frontend handles preview, localization, and complex conditional form logic.
Challenges
Umbraco preview inside a Next.js app
Implementing Umbraco's native preview feature in a Next.js frontend requires intercepting the preview request, authenticating against the Umbraco admin, and rendering draft content in the same pipeline as published content — without exposing the preview endpoint publicly.
Complex conditional form logic
The dealership lead forms have conditional fields that show, hide, and validate based on prior answers. We used TanStack Forms to manage this state cleanly, keeping validation logic declarative and testable rather than scattered across event handlers.
Multi-market monorepo without design drift
Multiple Omoda market sites share components and rendering logic but need independent visual designs. The monorepo architecture had to enforce shared behavior while giving each market site the freedom to override styles and layouts without forking the core.
Our approach
Monorepo architecture setup
Structured the monorepo to share components, rendering logic, and API clients across market sites while isolating site-specific design tokens and overrides. Established conventions so adding a new market doesn't require touching the shared core.
Umbraco content modeling
Modeled the content types in Umbraco to support dynamic block rendering in Next.js, including the conditional form fields and sidebar interfaces that vary by page context.
Preview and authentication
Implemented the Umbraco preview pipeline in Next.js: intercepting preview requests, authenticating against the Umbraco admin, and rendering draft content through the same rendering path as published content.
Forms, localization, and delivery
Built the complex conditional form validation with TanStack Forms, added multi-language routing via the Umbraco Dictionary and Next.js, and delivered the sidebar interface for rendering Umbraco pages and forms in-context.
Result
Multi-market ready monorepo. Umbraco-native preview in Next.js. Full multi-language support from day one.
By the numbers
multi-market
Monorepo architecture
yes
CMS preview in Next.js
full
Localization
Tech stack
We want to hear your thoughts.
our CTO Kyrylo Osadchuk, will reply within 24 hours. No SDR funnel.
Start a conversation
We want to hear your thoughts
Re: Omoda Denmark

