Skip to content
All projects
Client project Finance & insurance

BFI Insurify

Insurance at your finger click

A bilingual Flutter insurance app for car, health and life cover: compare packages, buy, track policies, file claims and renew.

Country
Egypt
Type
Client project
Platforms
Android · iOS
BFI Insurify
insurance lines in one app
3
languages, Arabic RTL and English
2

Overview

BFI Insurify is the customer app of an Egyptian insurance brokerage. Customers browse products as guests, compare packages from partner insurers and submit a full insurance request with their documents.

The same app then handles the whole policy lifecycle: activation, payment status, claims and refunds, renewals and a medical discount card, in Arabic and English with a full RTL layout.

The challenge

  1. 01

    Insurance is form-heavy. Car, individual, family and corporate health, and life each need different data and documents, yet all had to feel like one simple flow.

  2. 02

    Customers should explore offers without an account and only log in when they commit to a package.

  3. 03

    A policy moves through pending payment, pending activation, active and expired, plus claims and renewals. Customers need to see clearly where each one stands.

  4. 04

    Fixes had to reach users quickly without waiting for store review.

Highlights

Products and offers

  • Car insurance with a make, model and year catalog, car value and coverage percentage
  • Health cover for individuals, families and corporates (minimum 10 employees), plus life insurance with insured amount and duration
  • Server-driven packages with coverage bullets and Recommended or Best value badges
  • Bundle discounts when subscribing to more than one line, such as car plus health

Policy lifecycle

  • My Policies with status chips: Active, Pending payment, Pending activation, Expired
  • Policy activation with a payment key, payment-status updates and tracked renewal requests
  • Claims and refunds with document uploads, moving from Submitted to Review to Completed or Rejected
  • Medical discount card: choose a plan, request a card and activate it with a key

Account and UX

  • Phone and password login, OTP verification, password reset, profile completion and account deletion
  • Guest mode with a friendly Login required gate; Client or Associate account types
  • Notifications centre with mark-as-seen and FCM push
  • Light and dark themes, adjustable font scale and a runtime language switch

Signature feature

Compare, choose, then request

  • Each service card (car, medical, life) opens its packages. Names, coverage bullets and the recommended badge come from the API, so the business can change offers without an app release.
  • Guests browse everything; login is requested only when a package is picked.
  • The guided request collects product data (car catalog, health members or life amount), then personal data and documents uploaded as multipart form data.
  • On submit, a success screen gives the expected processing time, and the request appears under My Policies to be tracked through activation and payment.
  • With a bundle offer active, the plans for each line stay together so the discount applies across car and health in a single request.

Swipe for more

Engineering notes

  1. 01

    Session committed only after OTP

    Tokens are held as pending on login and written to storage only after OTP succeeds, so a half-verified user never gets a persisted session. On launch the splash silently refreshes the token, falling back to guest mode on failure.

  2. 02

    FCM token before the first screen

    Notification setup runs before runApp inside a try/catch, so the device token is ready to send with login, and the app still starts if Firebase isn't configured. On iOS the APNs token is awaited first.

  3. 03

    Guest-first navigation

    Home, services and packages work without auth. A reusable LoginRequiredDialog guards only the actions that need an account, keeping the entry funnel short.

  4. 04

    One request model for many products

    An InsuranceRequestContext carries the selected line, package and bundle plan through the multi-step forms, so car, health and life documents share one submission pipeline.

  5. 05

    Tablet-safe layout

    On tablets, a MediaQuery override pins a phone-sized logical canvas and a fixed text scale, so forms and cards never stretch or break.

  6. 06

    OTA hotfixes

    Shorebird is integrated, so Dart-level fixes ship as patches without a new store build.

Results

  • One app covering 3 insurance lines (car, health, life) and the full policy lifecycle: purchase, activation, claims, renewal and discount cards.
  • Fully bilingual, Arabic RTL and English, with light and dark themes.
  • Delivered to the client; not on a public store listing.

Stack

  • Flutter
  • Bloc / Cubit
  • Dio
  • REST API
  • cookie_jar
  • SharedPreferences
  • easy_localization
  • Firebase Messaging
  • Local notifications
  • image_picker
  • Shorebird