Food & Restaurant Technology / Retail Commerce
2023

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

Vue 2
Vuex
Vue Router
Vuetify
TypeScript
Webpack
SCSS
Capacitor 6
Axios
Firebase FCM
Firebase Analytics
Google Tag Manager
Elastic APM
Google Maps
JWT
Barcode Scanner
QR Code
Luxon
JSON Rules Engine
Docker
Jenkins CI/CD

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

Project Links

Interested in similar outcomes?