Case study · 2025
A flight booking engine built from the data model up.
Etihad needed a flight booking engine. There was no proven base that fitted, so it was designed and built to their specification, with a fixed quote after a free feasibility study.
- Custom build · NO BASE
- 2 to 8 weeks custom build window
- Source code transferred to Etihad’s own account
- Solution
- Custom build
- Product
- NO BASE
- Delivered
- 2025
- Stack
- STACK CHOSEN PER PROJECT · NO INHERITED BASE
- Build time
- 2 to 8 weeks
- Blocks reused
- 17 of 21
- Source code
- Transferred
What already existed, and what did not.
Every layer of this one was built for Etihad. The only shared floor is how it was deployed and handed over.
We build the product; the client launches the brand. That is the arrangement, and it only works if the handover is real: Etihad owns the source code, had a launch date in writing before work started, and can check every figure on this page against a public ledger.
Etihad ran a flight booking engine on the Custom build base. The work sat where it always sits on this base: data model, domain logic, services & apis.
The line between reused and built.
The work sat where it always sits on this base: data model, domain logic, services & apis. Everything else on the list below arrived already built and proven on other engagements running the same base.
What Etihad actually needed.
Etihad Airways came to us with a booking flow that was losing people before they reached payment, and a back end that could not answer "is this seat still available at this fare" quickly enough to be trusted.
That distinction decides the shape of a project like this. A business does not need a dispatch engine or a settlement ledger to be invented again; it needs one that already works, then it needs the handful of decisions that make the product theirs rather than anyone else’s. The four below are the load-bearing pieces Etihad would otherwise have spent months building before proving anything to a customer.
Every platform of this kind has the same shape underneath: a set of load-bearing parts that must be correct before a single customer can be served, and a much smaller set of decisions that make it one business rather than another.
Building the first set from zero would have consumed the window before the second was even discussed. That is the decision this engagement turned on, and it was taken before any code was written.
What we settled before building.
With no base to inherit, the first work was agreeing the data model and the rules that govern it.
Where a scope genuinely does not fit a proven base, we say so during scoping and quote it as a custom build instead, even when that costs us the larger and more comfortable project.
Read the requirement back to first principles
What must exist at launch, separated from what a business can add once it has customers. Those are different lists and conflating them is what makes projects run long.
Base versus build, capability by capability
Each of the 21 capabilities assessed against the existing base as covered, partial or absent. Partial is treated as absent, because a half-fitting module costs more than a new one.
Mark what only Etihad could decide
4 decisions were commercial or jurisdictional rather than technical. Those were theirs, and the engagement is where they got implemented.
Agree the line before writing anything
17 pieces reused unchanged, 4 built. Fixing that line up front is what turns a platform of this size into a two-to-eight-week build.
The parts that are genuinely hard.
The constraints Etihad brought to this engagement, taken from the project record.
Each is paired below with what was actually built against it. No outcome is claimed for this engagement beyond the work itself.
Booking flow abandonment
The existing interface made a booking hard to complete. Fare comparison and itinerary review were the specific friction points, and the drop-off sat between search and payment.
Integration surface
The engine had to reach payment providers, the customer database, the loyalty programme and third-party services including insurance and interline partners, without any one of them blocking a booking.
Peak load
An international carrier does not have steady traffic. Festive periods, fare sales and campaign launches arrive as spikes, and the platform had to hold its response time through them.
Real-time accuracy
Availability, fares and booking status all change continuously. Showing a price that is no longer valid is worse than showing nothing, so inventory and pricing had to be live rather than cached.
Regulation and data protection
Global aviation requirements and GDPR both applied, across every region the airline sells in.
Why Etihad was specified from a blank sheet.
No proven base fitted the shape of this product, so the whole of it was specified and built. Here is the account of that, part by part.
We looked for a proven base first, the way we do on every engagement. Nothing on the shelf carried the rules this product runs on, and a base that half fits costs more to bend than a clean specification costs to write. So Etihad was specified and built end to end, over 2 to 8 weeks.
What that bought is a system with nothing inherited in it. Every part answers to this product's own rules rather than to assumptions made for somebody else's, so there is no layer that has to be worked around later.
What this market demanded.
With no proven base, the market question is answered in the data model itself, because nothing upstream has already made those assumptions.
None of that is optional, and none of it is something a platform can guess on a client’s behalf. It is precisely why the 4 decisions listed further down sat with Etihad rather than with us: they are commercial and jurisdictional questions, and the base exists so that answering them is the whole job rather than the last ten per cent of it.
Everything that shipped with it.
The full working set Etihad took delivery of. Each piece was already built and proven on other engagements before this one started, which is the only honest reason a platform of this size stands up in weeks rather than quarters.
None of it is a demo or a scaffold. These are the same components running under other businesses in other markets, which means the failure modes are already known and already handled rather than waiting to be discovered by Etihad’s first real customers.
Reused from the Custom build base
Built for Etihad
The base this was built on.
The same architecture carries every Custom build on this page. The filled blocks are the parts built for Etihad.
Why none of this had to be written again.
Each of these was already running on other builds of the same base before Etihad started. That is the whole reason the platform was standing in weeks rather than months.
The decisions that were actually theirs.
A ready-made base does not remove these; it removes everything underneath them. Each one below is a choice Etihad had to make, and the engagement is where those choices got implemented.
Data model
Configured for Etihad during the engagement.
Domain logic
Configured for Etihad during the engagement.
Services & APIs
Configured for Etihad during the engagement.
Interfaces
Configured for Etihad during the engagement.
How a custom build runs.
With no base to start from, the sequence is the opposite way round: the data model first, interfaces last.
Data model
The entities and the rules that govern them, agreed before anything is built.
Domain logic
What the business actually does, expressed once and tested.
Services & APIs
How the parts talk, and what the contract between them is.
Interfaces
What the client’s people and customers use, built last on a settled core.
The client supplies the hosting and domain, a verified developer account we publish from, branding and business details, an onboarded payment gateway with KYC complete, and any third-party API keys. Store review and merchant onboarding are controlled by Apple, Google and the payment provider, so those sit outside our window. Every figure here is defined on the facts page.
Who uses it, and for what.
Rather than screenshots of a product that has moved on since delivery, this is the set of surfaces that shipped and what each one is for. Etihad received every one of them, with the source behind each.
Every role here is a separate application with its own permissions, its own state and its own release path. Building them to work as one system is most of the engineering in a platform of this kind, and it is the part that was already finished before this engagement began.
What guards the platform.
Built into the base and hardened across every engagement running it, rather than bolted on at the end of this one. Security added late is security that has to be argued for; the controls below were load-bearing from the first deployment.
We claim the process, not a certificate. Miracuves does not hold ISO 27001, and we do not say otherwise: we build to the controls those frameworks require, and the evidence trail is there for an auditor who asks.
Identity & access
accounts, roles,. Part of the base, so it was proven before this engagement started.
Role separation
Each surface sees only what its role permits, enforced server-side rather than hidden in the interface.
Audit trail
Who changed what and when, retained so a dispute can be answered with a record rather than a recollection.
Transport and storage
TLS end to end, credentials hashed, and anything sensitive at rest encrypted rather than merely obscured.
Secrets handling
Keys live in environment configuration on their own infrastructure, never in the repository we hand over.
Card data stays out
Payment details go to the gateway directly. The platform holds a reference, not a card number.
Backups and restore
Scheduled backups with a restore that was actually run, because an untested backup is a guess.
What it connects to.
The connection points are part of the base and were already written and tested. Which providers sit behind each one was Etihad’s decision, because those choices are commercial and jurisdictional rather than technical.
This is also where the client-side dependencies live. Gateway onboarding, KYC approval and merchant review are controlled by the provider, not by us, which is why they sit outside the build window rather than inside it.
Every one of these was already wired and tested in the base. What changed for Etihad was which account sat on the far side of it.
What it runs on.
The platform stack for NO BASE. This describes the base as it stands today; Etihad took delivery of the source and has owned it since.
How the weeks were spent.
Our build time only. Store review and merchant onboarding are controlled by Apple, Google and the payment provider, so they sit outside this window and we do not count them as ours. Stating that plainly is the difference between a build time and a promise we cannot keep. Every figure here is defined on the facts page.
Custom builds get a fixed quote after a free feasibility study. No open-ended timelines, and no scope creep arriving in the invoice.
Throughout, a named team worked the build and sent Etihad progress on WhatsApp every working day. There was never a week where nobody knew where it stood, which is the part clients tell us they notice more than the date itself.
The bar below is that window, day by day. Nothing outside it is counted as ours, and nothing inside it waits on someone else.
This base has done this before.
Etihad was not the experiment. The base underneath this build had already carried other businesses in other markets before it carried theirs, which is the whole argument for reuse: the risk was retired by somebody else’s project, not by this one.
Across everything delivered since 2010 that is more than 9,000 products for over 6,000 businesses across 35+ industries. The eighty-four documented on this site are the ones with a named client and permission to show the work; most of the rest sits under NDA or white-label and is deliberately not here at all.
Every number on this page is defined and sourced on a public facts ledger. That is the whole instinct behind how this company is run: most vendors ask you to trust them, and we would rather you checked us. If we cannot back a claim, we do not make it, which is why you will not find a satisfaction percentage or an unnamed award anywhere on this site.
Blocks reused unchanged on this build, each already under load on other engagements.
ArchitectureDocumented builds running on the Custom build base, in different markets.
PortfolioProducts delivered for more than 6,000 businesses across 35+ industries since 2010.
Company recordApps published under clients’ own brands, counted per store release.
Company recordWhat we can state plainly.
No client figures were supplied for this build, so these are architectural and contractual facts rather than outcomes.
Full repository history, to the client’s own account
Miracuves delivery recordWhat Etihad holds now.
The same on every engagement. What happened to the platform after handover was theirs to decide.
The questions that decide this.
Answered for this build. The same answers hold for every Custom build in the portfolio.
Do we own the code?
Yes. The full repository history transferred to Etihad’s own account at handover, with deployment configuration and architecture notes. It is not a licence and it is not held against a support contract.
How is two to eight weeks realistic?
Because the sequence is disciplined: data model first, interfaces last. Nothing is built twice.
What sat with Etihad?
Hosting and domain, a verified developer account we publish from, branding and business details, an onboarded payment gateway with KYC complete, and any third-party API keys.
Will it look like everyone else’s?
No. The base supplies mechanics, not identity. Branding, flows and every customer-facing screen were built for this product.
Is this what the platform looks like today?
This describes what was delivered in 2025. What happened afterwards was Etihad’s to decide; the source transferred at handover. Clients move on, rebuild, or sell up, and none of that changes what was delivered or how it went.
Would you have said no to this project?
We are a good fit for a founder who wants a proven model launched fast, a deadline they can hold us to, and code they own outright. We are a poor fit for anyone who needs a team embedded in their office full-time, or who wants a blank page and a six-month roadmap. Being straight about that up front saves everyone a call.
Who actually worked on it?
A named team, not a rotating pool. Our leadership is public with real profiles rather than a stock-photo team page, and progress went to Etihad on WhatsApp every working day of the build.
Others on the same base.
Different clients, different markets, one proven platform underneath.
Building something like this?
Tell us what you are building and we will say plainly whether a ready-made base fits it, including when the answer costs us the larger project.
- Ready-made platform deploys in 6 working days
- Custom builds run 2 to 8 weeks
- Source code transfers on every engagement
- Every figure here is defined on the facts page