Book an appointment

HomeBlog

One Flutter codebase, four apps: what sharing really saves

Engineering · 3 min read

The ClickToFood customer, rider, restaurant and hub apps are all built with Flutter. That does not mean they are one app with four skins. The saving comes from choosing carefully what to share.

Worth sharing

  • The design system. Buttons, inputs, colours and type are built once, so every app looks like the same product.
  • The API layer. One client and one set of models means an order looks the same in every app.
  • The plumbing. Sign-in, notifications, error handling and analytics.

Not worth sharing

Screens and flows. A rider on a bike and a restaurant at a counter have different jobs, and forcing them through shared screens makes both apps worse.

Designed per role
CustomerRiderRestaurantHub
Shared by all four
Design system
API layer
Sign-in, notifications, analytics
What each app owns, and what sits underneath all of them.

The rule of thumb

Share what users never see, and design what they do see for each role.

Book an appointmentAll posts

Keep reading

  • Engineering · 3 min read

    Why live order tracking runs on WebSockets

    A customer who has just paid wants to know where the order is. Here is why we push that status over an open connection instead of asking for it again and again.

    Read article
  • Product · 3 min read

    Five products, one order: how to scope a delivery platform

    Customer app, rider app, restaurant panel, admin and point of sale look like five projects. Scoping them around a single order keeps them one product.

    Read article