Car hire · Chileka Airport
R&H Car Rentals
R&H run a counter inside the arrivals hall at Chileka. Their customers are deciding between them and the desk next door, usually on a phone, usually while still holding a bag.
- Sector
- Car rental
- Where
- Chileka International Airport, Blantyre
- Live at
- rhcar.tekxpat.com
The brief
What they needed
Show the fleet properly — what each vehicle is, what it seats, what it costs.
Take booking enquiries from people who are already at, or heading to, the airport.
Be credible against international rental brands without pretending to be one.


What we built
The work
Fleet catalogue
Every vehicle with its own page: photographs, seats, doors, transmission, engine, and the rate where a rate has been confirmed. Filterable by what the customer actually cares about.
Rates that are either right or absent
Confirmed rates are shown. Unconfirmed ones are not guessed at — the page says to ask. Structured price data is only published for rates the client has actually confirmed.
Booking enquiry flow
Vehicle, dates, and contact details, delivered to the desk. As with Phonex Taxi, a delivery failure is surfaced to the customer rather than swallowed.
Airport-specific search presence
Structured data marking the business as a car rental at a named airport, with its service area and payment methods. That is what makes it eligible to appear for "car hire Chileka airport". Opening hours are deliberately absent from the markup until the client confirms them — wrong hours in structured data strand people at an airport.
Built with
- Next.js 15 (App Router)
- TypeScript
- Tailwind CSS
- Schema.org structured data (AutoRental)
- GitHub Actions deploy with canonical + sitemap verification
- Managed hosting on our own server
Decisions
Why it was built this way
Nothing unconfirmed was invented
The client had not confirmed which hall the desk is in, whether they take Mastercard, or where the vehicle yard is. Those are absent from the site rather than filled in plausibly. A confident wrong detail about an airport counter sends a customer to the wrong place.
The palette was measured, not eyeballed
Their signage uses navy, maroon and gold. Gold on the off-white background measures 3.3:1 — fine for a rule or an icon, and a fail for body text. So there are two golds: one for fills, a darker one for anything you have to read.
A wrong canonical tag cannot ship
Every URL on the site derives from one environment variable, and the build fails loudly if it is missing. The deploy then re-checks the live HTML and the live sitemap to confirm they point at the intended domain. A wrong canonical de-indexes a site silently — nothing else in the pipeline would catch it.
The production server never builds
GitHub Actions builds the site and ships the finished artefact. The box that serves the site never runs a build, so a routine deploy cannot exhaust its memory and take down another client running on the same server.
See for yourself
rhcar.tekxpat.com is live right now
Open it on your phone. Time how long it takes to load. Search for the business on Google. Everything on this page is checkable, which is the only kind of claim worth making.
The other one
Phonex Taxi
Taxi and airport transfer service in Blantyre. A Next.js site with a booking system, set up to be found by people searching for a ride.
Read it →Prefer to talk? WhatsApp us.