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
- 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
- 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.
- 02
Customers should explore offers without an account and only log in when they commit to a package.
- 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.
- 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.
Screens
Swipe for more
Engineering notes
- 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.
- 02
FCM token before the first screen
Notification setup runs before
runAppinside 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. - 03
Guest-first navigation
Home, services and packages work without auth. A reusable
LoginRequiredDialogguards only the actions that need an account, keeping the entry funnel short. - 04
One request model for many products
An
InsuranceRequestContextcarries the selected line, package and bundle plan through the multi-step forms, so car, health and life documents share one submission pipeline. - 05
Tablet-safe layout
On tablets, a
MediaQueryoverride pins a phone-sized logical canvas and a fixed text scale, so forms and cards never stretch or break. - 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