Bifrost Shop — Multi-Tenant QSR & Retail Ordering Platform
Role
Full Stack Engineer
Client
Sprinting Software
Duration
2 years
Context & Goals
Enterprise multi-tenant ordering platform serving major Nordic QSR and retail brands — Sunset Boulevard, Carl's Jr., Bilka, and Harald Nyborg — as a cross-channel web app and native iOS/Android app from a single codebase.
Constraints & Challenges
Major Nordic QSR chains and retailers (Sunset Boulevard, Carl's Jr., Bilka, Harald Nyborg) needed a single unified ordering platform capable of serving customers across four distinct channels — kiosk, desktop browser, mobile browser, and native iOS/Android app — while maintaining completely separate brand identities, business models, feature sets, and regional configurations per tenant, all without maintaining separate codebases.
Solution & Approach
Built a single Vue 2 + Vuex codebase with a deep multi-tenant configuration layer, where each of the 25+ tenant IDs maps to its own business model (QSR, Catering, Retail), locale, pricing rules, payment providers, shop selections, and feature toggles. Used Capacitor 6 to compile the web app into native iOS and Android binaries with per-brand Groovy pipeline scripts for CI/CD. Implemented a provider-based API layer (100+ provider modules) to abstract backend communication, and a JSON Rules Engine for dynamic pricing and capacity logic at the client side.
Delivered a production cross-channel ordering system serving Sunset Boulevard, Carl's Jr., Bilka, and Harald Nyborg across kiosk, web, and native mobile. The platform handles full order lifecycle management, loyalty and punch card integration, subscription management, voucher redemptions, upsell rules, group ordering, and mystery box promotions. Integrated Firebase FCM push notifications, Capacitor barcode scanning, geolocation, PDF receipt generation, and real-time order tracking via SSE. Monitored with Elastic APM RUM, Google Analytics, Firebase Analytics, and Microsoft Clarity across all tenant deployments.
Technology Stack
Results & Impact
25+ tenant configurations across Sunset Boulevard, Carl's Jr., Bilka, Harald Nyborg, and Salling Group brands from a single codebase
Four distinct channel targets served: kiosk, desktop browser, mobile browser, and native iOS/Android app
100+ API provider modules powering the full commerce domain including loyalty, subscriptions, vouchers, upsell, group ordering, and A/B testing
Native iOS and Android apps compiled from the same web codebase via Capacitor with per-brand automated CI/CD pipelines
Full analytics stack: Elastic APM RUM, Google Tag Manager, Firebase Analytics, and Microsoft Clarity running in production across all tenants