KAKhaled AshrafSoftware EngineerHire me
Projects

Food Ordering Marketplace

GrubHouse

GrubHouse connects customers with restaurants and shops through discovery, product catalogs, saved addresses, carts, checkout, order history, and delivery or pickup flows.

FlutterDartRiverpodFreezedDio

Stack depth

11+

tools and integrations

Product scope

Email, phone/OTP, Google, Apple, and Facebook authentication support. Home feed with banners, shop listings, categories, product listing, and product details.

Stack

Technology stack

FlutterDartRiverpodFreezedDioAutoRouteGetItFirebaseGoogle MapsGoogle PlacesCodemagic

Features

Key product features

  • Email, phone/OTP, Google, Apple, and Facebook authentication support.
  • Home feed with banners, shop listings, categories, product listing, and product details.
  • Cart persistence, product filtering, sorting, and currency-aware API requests.
  • Order creation, active/completed orders, delivery, pickup, and order status handling.
  • Address management, geolocation, Google Maps, geocoding, and route drawing.
  • Push notifications, dynamic links, blogs/content, settings, and translations.

Architecture

Technical decisions

Followed a layered Flutter structure with presentation, application, domain, and infrastructure layers.

Used repository-driven API integration against `https://api.grubhouse.co.uk`.

Managed feature state with Riverpod providers/notifiers and generated immutable state classes.

Used Codemagic configuration for iOS TestFlight publishing workflows.

Problem solving

Challenges and solutions

The mobile app depended on a large external API surface without backend ownership in the repository.

Kept API access isolated in infrastructure repositories for auth, shops, products, carts, orders, addresses, payments, settings, and notifications.

Food ordering required fast navigation through many high-frequency customer flows.

Built mobile-first UI flows for discovery, product details, cart persistence, checkout, address selection, and order history.

Screenshots / video

Product media

Media shown here comes from the project source folders in this workspace.