All case studies

Tech · Food Delivery · Mobile App Development

Frischy: Mobile App Development for Fresh Food & Grocery App in the UAE

Frischy needed a full-featured iOS and Android commerce app for fresh seafood, meat, and grocery delivery — with geofenced availability, real-time stock enforcement, and a flexible checkout covering coupons, wallet balance, and loyalty points. A native-only approach would have doubled the build cost and timeline.

Flutter DevelopmentUX DesignFirebase IntegrationApp Store Submission
Client
Frischy – Fresh Food & Grocery App
Year
2025
Scope
Flutter Development, UX Design, Firebase Integration, App Store Submission
Period
End-to-end build
Frischy – Fresh Food & Grocery App brand hero image

The brief

Frischy set out to bring fresh seafood, meat, and grocery shopping online for customers in Kerala, India. The product needed native-quality performance, a smooth onboarding flow, real-time delivery availability checking, and a checkout flexible enough to stack coupons, wallet balance, and loyalty points — all without the cost of maintaining separate iOS and Android codebases.

Frischy app splash screen — Fresh from nature logo on white background
Frischy — Fresh from nature

Why Flutter

A native-only approach would have meant two codebases, two teams, and double the maintenance surface long-term. Flutter lets us write a single Dart codebase that compiles to native ARM on both iOS and Android — same performance, roughly half the cost. The entire UI, state management, and business logic lives in one place, so every update ships to both platforms simultaneously.

Authentication & onboarding

We integrated four sign-in paths so users pick what feels familiar. Email and password for traditional accounts. Phone OTP via Firebase Authentication — the most common local preference in South Asia. Google, Facebook, and Apple social login for one-tap access. All paths converge on the same session token, and an auto-login flow restores the session silently on every relaunch so returning customers land straight on the home screen.

Product discovery & categories

The home screen loads banner sliders, public announcements, and six product categories: Seafood, Meat & Poultry, Fresh Store, Grocery, Ready to Cook, and Combo & Offer. Categories with subcategories open a picker first; others go straight to a product list. Search, best sellers, and offer filters layer on top of the same API endpoint — keeping the backend surface minimal while giving customers multiple ways to find what they need.

Frischy in action — live app

Cart, KG products & stock enforcement

Most grocery apps treat all products identically. Frischy handles two distinct product types: standard unit items and KG-type products that increment by 0.5. A single product can appear multiple times in the cart with different cutting selections, each carrying its own cutting charge folded into the line-item price. Stock limits are enforced before every quantity increase — the app surfaces "Out of stock" explicitly rather than silently capping, so customers never hit a surprise at checkout. Cart state is persisted in SQLite and survives app restarts.

Frischy cart illustration — fish jumping into a shopping cart
Fresh products, added straight to cart

Geofenced delivery

Delivery availability is checked continuously using the Haversine formula against a fixed delivery centre. If the customer's location falls outside the 4.5 km radius, a dedicated screen blocks the main experience — no misleading browsing that ends in a checkout dead end. Delivery charge and the free-delivery threshold are server-configured via the delsettings endpoint, so pricing can change without a new app release.

Fresh salmon, chicken breast and beef on a wooden cutting board — the produce Frischy delivers
Fresh to your door — within a 4.5 km radius

Checkout: coupons, wallet & points

Checkout supports four discount mechanisms that can stack in a single order. Category coupons reduce the subtotal for a specific product category. Delivery coupons knock off the delivery charge instead. Wallet balance draws down the stored credit. Loyalty points convert at a server-configured rate — default 10 points equals ₹1 — with a minimum redemption floor set from the backend. The final order payload packages the full cart, delivery metadata, coupon value, and redemption amounts into one request.

Firebase, Sentry & production reliability

Firebase handles three concerns: phone OTP authentication, order and promotion push notifications via FCM, and analytics event tracking. Sentry monitors crash rates and unhandled exceptions in production — giving the team full observability without building a custom error pipeline. The result: real usage data and crash reports visible from day one, no instrumentation work required from the client.

Outcomes in End-to-end build

2
Platforms shipped from one Flutter codebase
6
Product categories live at launch
4
Authentication methods integrated
4
Stacking discount mechanisms in checkout

Credits: Project led by Fynx · Design lead: Faisal Ashraf

Have a brand or campaign that needs to bite back?

We design identity systems and growth campaigns for ambitious brands across the UAE.

Start a project with Fynx