← All projects

Case study· Zeta, Podgorica· 2026

Elite Ride

Premium Chauffeur Service with Online Payments

Elite Ride shown on a laptop, tablet and phone
Context

Elite Ride Mugoša is a Montenegrin operator of premium transfers: airport transport, business travel, weddings and private tours, with a fleet ranging from limousines to minibuses.

Challenge

The website had to work as a sales channel rather than a business card: the guest should get a price before asking anyone, and be able to pay by card, provided the bank approved the integration.

Solution

We built a Laravel site with live pricing per vehicle class from the dispatch system, card payments through Monri WebPay and a Vue admin panel for bookings and content.

Results

The site is in production in English and Montenegrin, with card payments live, bookings synced back to the dispatch system and content the client manages independently.

Monri, 3-D SecurePayments
live per vehicle classPricing
Vue panelAdmin
2Languages

Business card or sales channel

Elite Ride Mugoša runs premium transfers in Montenegro. Airport transport, business travel, weddings, private tours. The fleet ranges from a limousine for two to a minibus for sixteen.

Operators like this usually have a website that looks good and does nothing. A photo of a car, a list of services, a contact form, and then waiting for someone to send an enquiry and ask what it costs.

Our job was to flip that: the guest should get a price before asking anyone, and be able to pay straight away if they want to.


Live pricing, per vehicle class

The homepage carries a booking bar: date, time, pickup and drop-off.

Addresses are picked through Google Places search that runs via our own server and is cached, so it is fast and does not burn quota on every keystroke. Search suggests Montenegrin results first, then widens to the region.

Once the guest confirms, the system requests a price from the operator's dispatch system, for exact coordinates and an exact time, and returns an amount for every active vehicle class. Alongside the base fare come the surcharges the operator applies: extra stop, child seat, meet and greet, gratuity, fuel, airport fee, night driving and rush hour.

When a booking goes through, it is pushed back into the dispatch system, so the driver receives the job through the tool they already use. Nothing is retyped from an email into a schedule.


Payments that had to wait for a bank

This was the longest part of the project and it is worth telling honestly.

The site launched on one gateway, and during the summer of 2026 we migrated to Monri WebPay using their components integration. The migration meant a new request signature, new webhook verification and a fresh round of validation with the bank.

A few decisions made that safe:

  • The webhook is verified by signature, compared in constant time, so a forged call cannot mark a booking as paid
  • The card payment switch is enforced on the server. Until the bank approved, the payment path returned an error and the card field was not rendered at all. This was a closed path, not a hidden button.
  • "Order and pay later" always works, so the business never stalled for a single day while approval was pending
  • There is a separate password-protected test page the bank uses to validate the integration on a real transaction, with no contact whatsoever with the live flow

The footer carries Visa, Mastercard and Maestro marks, alongside pages on payment security, cancellation and refunds, because card payments require a legal framework and not only a technical one.


Fleet and services the client manages

Vehicle classes sync from the dispatch system, but everything the guest sees stays in the client's hands: name, description, images, drag-and-drop ordering and a visibility toggle. The sync deliberately does not resurrect locally deleted classes and does not overwrite manually entered names, because otherwise every sync would undo the editing.

Services, homepage banners and news all run through the same admin, with a rich text editor and translations for both languages in tabs.

The news module is not decoration. Through it the site captures seasonal searches: a new airline arriving in Podgorica, festivals, transfer advice. Those are the topics that bring in guests who are still planning a trip.


Rules that protect the schedule

Rides are not accepted without limits. The admin configures advance notice rules by distance band from Podgorica, so long-distance rides require more notice. Distance is calculated against a fixed base point, so the rule behaves the same regardless of where the guest is coming from.

Abandoned bookings are cleared by a scheduled job, so the booking list stays usable.


Under the hood

Backend: PHP 8.2, Laravel 13, Spatie packages (permission, translatable, sitemap, honeypot), Sentry, reCAPTCHA Enterprise alongside a honeypot.

Public site: Blade with an SCSS theme and Alpine.js.

Admin: Inertia.js with Vue 3 and Vuetify, fourteen screens, with per-section permissions (bookings, articles, services, banners, vehicle classes, advance rules, translations, users).

Integrations: the operator's dispatch system for pricing, extra fees and pushing bookings back, Google Places for addresses, Monri WebPay for cards.

SEO: a sitemap generated by crawling the site with hreflang alternates, seven JSON-LD schemas (organisation, local business, website, breadcrumbs, FAQ, site navigation), GA4, Google Ads and Clarity, each rendered only when its identifier is set.

Scope: 12 models, 26 migrations, two languages (English and Montenegrin), around 95 commits between April and July 2026.

You can read how we approach projects like this on our Web development and UX and web pages.


What came out of it

Working on this site showed that the same operator has two entirely different audiences. A guest looking for a wedding limousine and a passenger looking for an airport taxi do not search the same way and do not decide the same way.

So for the same client we also built Podgorica Airport Taxi, a site focused purely on airport transfers with fixed prices per route. Both sites carry the Zayoto mark, and the experience from both is built into the transfers module on the Zayoto platform.


Visit the website

eliteride.me


If you run a transport business and need a website that quotes and takes payment rather than simply showing vehicles, get in touch. Have a look at the other projects in our portfolio.

Gallery

It all starts
with one question.

One question to start: why does your business exist? Everything else follows from that.

Let's talk