The customer
Books a service, sees a price, and knows when someone is coming. Tracking the technician in real time turns the most common support call into something the customer answers for themselves.
Field service has a structural problem — the three people involved in one job need three completely different screens. We build all three from a single codebase, which is how Ezhal, a car-service platform, got a customer app, a technician app and a manager view without paying for three separate builds.
Books a service, sees a price, and knows when someone is coming. Tracking the technician in real time turns the most common support call into something the customer answers for themselves.
Today's queue, in order, on a phone, usable with one hand and often with a dirty screen. Closing a job takes a tap, not a phone call back to the office.
Everything at once: who is where, what is late, what is done, and what it earned. The view that turns an operation from remembered into measured.
Three role-specific apps built from a single Flutter codebase. A fix is written once. A new feature does not have to be built three times, and the three apps cannot drift apart.
Ezhal is a multi-role car-service platform: three role-specific apps — customer, field technician and manager — built from a single Flutter codebase, with live tracking, subscriptions, a wallet, points and Apple Wallet passes, using Riverpod with MyFatoorah, Stripe and Firebase.
It was delivered to the client and runs as their platform, so there is no public store link to show you. The case study on this site describes what was built and how it fits together, and we can walk through it properly on a call.
Three roles is genuinely more work than one app, and it usually lands at three to four months. The honest alternative is to start with one role — most often the technician, because that is where the time is being lost — and add the others once the first is earning its keep.
Either way the price is fixed in USD before anything starts, split across milestones, with a working build to open at each one.
Multi-role car-service platform
Read the case study →
Yes, and it is often the right call. Starting with the technician app usually pays for itself first, because that is where jobs get lost. The architecture is built so the other roles can be added later without starting again — that is a design decision made at the beginning, not a promise made afterwards.
No, but which parts work offline is a scoping decision rather than a default. We agree up front exactly which actions must work with no signal — usually viewing the day's jobs and closing one — and what happens to that data when the phone comes back online.
Sometimes. It depends entirely on whether your existing system has an API or an export worth using, and that is the first thing we check rather than the last. If it does not, you will hear that on the scope call and not after you have paid for an integration.
Through a payment gateway in the app — Stripe, MyFatoorah or PayTabs, chosen for the country you operate in — or on completion in cash if that is how your business runs. Both are normal and the app should match reality, not the other way round.
You do. Code, intellectual property, hosting, database and the Apple and Google developer accounts are all in your name from the first day. That is the standing arrangement on every project here.
Describe how a job moves through your business today — who takes it, who does it, and who never finds out. You get a scope summary and a fixed price in USD.