Food Delivery · Mobile Commerce

Stallo Fried Chicken

Direct-to-consumer food delivery and multi-branch ordering engine for the Finnish market on iOS and Android.

Client / Market

Evocation-IT

Helsinki, Finland (Remote)

Role & Scope

Contract Flutter Mobile Engineer

2025 · Production Launch

Target Platforms
iOSAndroid

Cross-Platform Flutter Engine

Production Store Links
Stallo Fried Chicken official mobile app banner and interface mockup

Official production release on Google Play and Apple App Store (Finland)

2 PlatformsiOS & Android

Single Flutter codebase with native platform fidelity

< 3 MinCheckout Velocity

From discovery to confirmed order placement

60 FPSScroll Performance

Fluid rendering across complex item modifiers and catalogs

100%Direct Channel

Eliminates 20–30% aggregator commission fees on direct orders

Executive Summary

Stallo Fried Chicken is a growing restaurant brand in Finland offering premium fried chicken, burgers, sides, and signature family meals. To break reliance on third-party food aggregators that charge steep 20–30% marketplace commissions, the leadership team at Evocation-IT commissioned a dedicated, high-performance cross-platform mobile application.

I was brought on as the Lead Flutter Engineer to architect, build, and deploy the production mobile apps for Android and iOS. The mandate demanded a frictionless consumer ordering experience: multi-branch location selection, sub-second food catalog browsing, custom item modifiers (spiciness, combo sides, beverages), dynamic coupon codes, transparent checkout, and live order status tracking.

By leveraging Clean Architecture and a feature-first modular system, the application delivers fluid 60 FPS interactions, instant cart recalculations, and resilient offline handling, giving Stallo direct customer ownership and recurring brand loyalty.

The Challenge

The Challenge: Disintermediating Aggregators Without Sacrificing Consumer UX

Quick-service restaurants face an uphill battle when competing against massive food delivery aggregators like Wolt and Foodora. To succeed as a standalone direct-to-consumer channel, the native app needed to match or exceed aggregator UX standards while solving multi-branch logistical constraints.

01

Aggregator Margin Bleed & Brand Dilution

Paying 20–30% per order to third-party delivery networks compressed operating margins and severed direct customer relationships, preventing targeted loyalty rewards and repeat marketing.

02

Multi-Branch Inventory & Operational Disconnect

Different physical locations had varying opening hours, delivery radiuses, and item availability. The app needed strict branch validation so customers never ordered from closed or out-of-stock locations.

03

Complex Item Customization & Add-on Rules

Unlike simple retail, food ordering involves multi-level modifiers: mandatory combo choices, optional dips, item size upgrades, and special cooking notes. The state management had to be rock-solid to prevent invalid cart payloads.

04

Friction in Checkout & Payment Method Adaptability

Finnish diners expect flexible payment options: Cash on Delivery (COD), in-app card payments, and future local gateways. Any payment or network hiccup risked immediate basket abandonment.

Project Scope

Engineering Objectives & Delivery Scope

  • Architect a maintainable, testable Flutter codebase using Clean Architecture and feature-first modularization.
  • Implement real-time multi-branch sync with automatic opening hours detection and delivery radius fencing.
  • Build a sub-second catalog navigation system with fluid categorization, search, and dynamic item modifiers.
  • Design an atomic cart state machine that handles add-ons, quantity limits, coupon logic, and delivery fee calculation with zero race conditions.
  • Integrate dual checkout options (Cash on Delivery & Secure Online Card Processing) with transactional failure safety.
  • Provide end-to-end order lifecycle tracking from kitchen receipt to courier dispatch and delivery.
  • Deploy production builds to Google Play Store and Apple App Store in compliance with EU privacy and store review guidelines.

Engineering Foundation

Architecture & Technical Design

To prevent technical debt and ensure longevity, the app is structured around Clean Architecture with strict separation between Presentation, Domain, Data, and Core infrastructure layers.

Feature-First Modular Layering

Each feature domain (auth, catalog, cart, checkout, orders, address) encapsulates its own presentation controllers, domain entities/use cases, and repository data sources. Cross-feature dependencies flow through explicit contracts.

Clean ArchitectureFeature-FirstDomain Separation

Reactive Cart State Engine

Cart operations use an immutable state model that recalculates discounts, branch surcharges, delivery fees, and add-on pricing atomically. Debounced local persistence ensures cart recovery across app restarts.

State MachineImmutabilityLocal Persistence

Resilient Networking & Cache Boundary

Configured with Dio/Http client interceptors for automatic JWT refresh, exponential backoff retries, and offline catalog caching so flaky mobile data connections never produce empty or broken screens.

REST APIInterceptorsCache Strategy

Strict Store Review Compliance

Implemented Apple & Google account deletion requirements, transparent privacy policies, GDPR consent checks, and asset optimization for swift store review approval.

App Store ReviewPlay ConsoleGDPR Ready

Deep Dive

Key Technical Implementations

Detailed breakdown of core features addressing complex mobile engineering requirements.

Interactive Modifiers

Dynamic Food Catalog & Modifier Engine

Sub-second browsing with customized meal combinations

Quick-service restaurant menus require flexible product configurations. We engineered a dynamic modifier system supporting mandatory single-select options (e.g., choice of side), multi-select add-ons (extra cheese, jalapeños, dipping sauces), and special kitchen instructions. Prices update in real time with smooth animations and zero UI stutter.

  • Nested option trees with validation for mandatory requirements before cart addition
  • Real-time price recalculation that updates base price plus selected modifier differentials
  • Custom dietary allergy and cooking instructions field preserved through to kitchen ticket
Interactive Modifiers
Dynamic Food Catalog & Modifier Engine
Location Logistics

Multi-Branch Sync & Availability Guards

Location-aware ordering with operational boundary checks

Food cannot be ordered from a kitchen that is closed or beyond the maximum delivery radius. The app automatically checks the customer’s location or manual branch selection against the restaurant branch schedule and operational polygon before allowing order progression.

  • Live branch status checking (Open, Closing Soon, Closed, Dine-in/Pickup Only)
  • Delivery radius validation preventing out-of-bounds orders before reaching payment
  • Branch-specific menu overrides for temporary out-of-stock items
Location Logistics
Multi-Branch Sync & Availability Guards
Conversion Focused

Streamlined Checkout & Multi-Channel Payments

Dual checkout modes with transparent bill breakdown

Cart abandonment kills food delivery conversion. We refined the order summary into a clear single-screen layout featuring a Delivery vs. Takeaway Pickup toggle, instant coupon code validation, delivery surcharge calculation, and dual payment support (Cash on Delivery and Online Card Processing).

  • One-tap toggle between Home Delivery and Store Pickup with dynamic fee adjustments
  • Server-side coupon validation with instant feedback on minimum spend requirements
  • Safe idempotency keys on payment submission to prevent double charges on slow networks
Conversion Focused
Streamlined Checkout & Multi-Channel Payments
Customer Retention

Order Status Lifecycle & Instant Reorder

Real-time kitchen feedback and historical records

Keeping customers informed reduces anxiety and support requests. Customers can track their order through a visual status stepper (Placed → Kitchen Preparing → Out with Driver → Delivered) and reorder previous favorite meals with a single tap.

  • Visual status timeline reflecting real-time kitchen and courier progress
  • Itemized past order receipts with tax and payment method breakdowns
  • 1-tap reorder button that pre-populates the cart with previous customizations
Customer Retention
Order Status Lifecycle & Instant Reorder

Hurdles & Solutions

Technical Challenges & Trade-Offs

Real production obstacles overcome during engineering and deployment.

Challenge

Handling Complex Multi-Tier Modifier Pricing without UI Lag

Engineered Solution

Separated modifier selection logic into a dedicated domain entity with pure functional price reducers. The presentation layer only consumes the immutable calculation, keeping the UI at 60 FPS even on low-end Android devices.

Measurable Impact

Eliminated modifier calculation bugs and ensured exact price parity between the app and the POS backend.

Challenge

Preventing Double Order Submission on Unstable Mobile Connections

Engineered Solution

Implemented client-side request de-duplication with a unique UUID idempotency header per checkout attempt, paired with optimistic UI disabling on the submit button.

Measurable Impact

Zero duplicate order incidents reported in production, even when users experienced elevator cellular drops.

Challenge

Dual Store Approval Guidelines (Apple & Google)

Engineered Solution

Preemptively handled in-app account deletion, localized Finnish privacy disclaimers, clear digital receipt displays, and transparent pricing disclosure.

Measurable Impact

Passed both Apple App Store Review and Google Play Console checks on first submission with zero rejections.

Outcomes

Impact & Production Outcomes

The Stallo Fried Chicken mobile applications successfully launched as the brand’s flagship direct-to-consumer digital channel in Finland. By combining a clean, appetizing design with robust mobile engineering, the app provides Finnish diners with a native, fast alternative to aggregator apps while keeping margins inside the business.

100%Production Live

Active in production across Finnish Android & iOS app stores

0Store Rejections

First-time approval on both Google Play Store and Apple App Store

20–30%Margin Saved

Per-order commission retained on direct customer orders

60 FPSUI Smoothness

Fluid animations, smooth bottom sheets, and responsive touch feedback

Explore the live app on official stores

Technology Breakdown

Tools, Frameworks & Libraries

Categorized technical stack employed to achieve reliability, performance, and store compliance.

Core Framework & Language

Flutter 3.xDartClean ArchitectureFeature-First Modularity

State & Local Persistence

Provider / BlocHydrated StateFlutter Secure StorageShared Preferences

Networking & Backend API

REST API (Dio)JSON SerializationJWT Auth InterceptorsExponential Backoff

Location & Device Hardware

GeolocatorGoogle Maps / Places APIPush Notifications (FCM)Device Info

Payments & Security

In-App PaymentsCash on Delivery (COD)Idempotency KeysSSL Pinning

DevOps & Quality Assurance

Vite / Web BuildFastlaneGoogle Play ConsoleApple App Store Connect