Παράκαμψη στο περιεχόμενο
← Όλα τα Case Studies

Travel & Transportation

JK Tours

Booking platform 13 οχημάτων με Stripe checkout & dynamic pricing

Από Excel πινακάκια σε self-service booking με 4-layer sync

13
Οχήματα
active fleet, 8 groups
489/489
Audit checkpoints
regression-tested
v1.14.1
Bridge version
v2.18.2
Child theme
jk-tours-child
8 εβδομάδες (initial) + ongoing maintenance2024-2026

Challenge

Τι έπρεπε να λυθεί

Ο πελάτης δούλευε με Excel + email για 13 οχήματα στην Αγία Πελαγία. 8 ομάδες χρεώσεων × 2 εποχές (LOW/HIGH), διαφορετικά rates για 5d package και 6+ ημέρες, και υποχρεωτική ασφάλιση που εξαρτιόταν από τον τύπο οχήματος. Κάθε λάθος έκλεινε ή χάλαγε booking.

Solution

Τι χτίσαμε

Χτίσαμε ολοκληρωμένο booking engine πάνω σε WordPress με custom child theme `jk-tours-child` και δικό μας PHP Bridge. Stripe checkout σε branded overlay χωρίς redirect, real-time τιμές με LOW/HIGH και 6+day κανόνες από Excel-driven matrix, ασφάλιση ανά κλάση οχήματος, 489/489 audit checkpoints regression-tested.

Custom Modules

Τι το κάνει διαφορετικό

01

4-layer sync (events ↔ calendar metadata ↔ ACF ↔ theme)

Custom PHP Bridge v1.14.1 με REST hooks. Αλλαγή σε events αντανακλάται σε calendar metadata, ACF fields του οχήματος, theme display, panel και iOS app, χωρίς manual sync. Single source of truth = events.price.

02

Excel 8-group LOW/HIGH dynamic pricing

Excel-driven price matrix με 13 οχήματα σε 8 ομάδες × 2 εποχές. Per group: 1day rate, 5d package, 6th-day-and-over rate, full insurance/day. HIGH 15/6-30/9, LOW το υπόλοιπο. Admin updates μέσω wp-cli scripts, system re-syncs ACF + events σε ένα run.

03

Stripe checkout overlay χωρίς redirect

Branded full-page Stripe overlay εντός site, με Πίσω και Close buttons που κρατάνε το modal state. Cost breakdown dropdown με per_day rates, 5d package, 6+ days extras, ασφάλιση, Spring -20% line, VAT-included note.

04

Δυναμική ασφάλιση ανά τύπο οχήματος

Αυτόματος υπολογισμός ασφαλιστικής με βάση το group + διάρκεια κράτησης. Βγαίνει ως ξεχωριστή γραμμή στο checkout, με rates που τραβιούνται από το ίδιο group config (single source of truth).

05

Multi-language (EL/EN) + premium polish

Έξι-step booking modal (Dates, Location, Contact, Review, Payment, Success), τιμοκατάλογος με per-day variance transparency, mobile-first vehicle cards. Stripe overlay σε EL/EN.

06

Semantic versioning + 489-test audit

Custom child theme jk-tours-child v2.18.2 + premium JS v2.13.1, deployment via SCP + opcache flush. 489-test audit suite τρέχει end-to-end pricing parity (modal, Stripe, panel, iOS app, ασφάλιση), 489/489 pass post-migration.

Live από production

Πώς δείχνει στην πράξη

Screenshots από το ζωντανό site. Τιμές, ονόματα πελατών και ευαίσθητα στοιχεία είναι μασκαρισμένα με skeleton blur ώστε να φαίνεται μόνο το functionality.

Αρχική σελίδα κρατήσεων με entry points για επιλογή οχήματος

Mobile

Hero σε mobile με quick search booking

Αρχική σελίδα κρατήσεων σε desktop με ολόκληρο booking widget

Desktop

Hero desktop με στοιχεία trust και 4 USPs

Κάρτα οχήματος με προδιαγραφές, τιμή κρυμμένη με skeleton

Mobile

Fleet card mobile με τύπο, χωρητικότητα, transmission

Λίστα 8 οχημάτων με φίλτρα κατηγοριών στο top

Desktop

Στόλος desktop με filter chips και 4-column grid

Πολυβηματική φόρμα κράτησης οχήματος, στάδιο επιλογής τοποθεσίας

Mobile

Booking modal step 1 σε mobile, επιλογή pickup/return

Πολυβηματική φόρμα κράτησης σε desktop με stepper navigation

Desktop

Booking modal step 1 σε desktop με 12 πιθανά σημεία

Στάδιο 2: επιλογή ημερομηνιών παραλαβής και επιστροφής

Mobile

Booking step 2 mobile με date pickers και ώρες

Στάδιο 2 σε desktop με stepper progress και summary επιλογής

Desktop

Booking step 2 desktop με checkmark σε ολοκληρωμένο στάδιο

Tech Stack

Με τι χτίστηκε

WordPressCustom Child ThemeStripePHP BridgeACF ProWP-CLICustom REST API

Όλο το stack είναι τυποποιημένο. Δεν βασίζεται σε κρυφά παραμετροποιημένα plugins ή proprietary cloud services. Μπορεί να μεταφερθεί ή να συντηρηθεί από οποιαδήποτε ομάδα γνωρίζει το stack.

Στις παραδόσεις και επιστροφές οχημάτων δεν έχω laptop στο χέρι. Όταν σκάει push για νέα κράτηση, την επιβεβαιώνω σε δύο taps στο Wide Book Admin και φεύγει αυτόματα το confirmation email στον πελάτη. Από laptop δεν θα προλάβαινα.

Χαρούλα Κληρονόμου · JK Tours

FAQ

Συχνές ερωτήσεις

Πόσο διαρκεί η κατασκευή ενός booking system με Stripe checkout για στόλο οχημάτων;

Το αρχικό build του JK Tours χρειάστηκε 8 εβδομάδες για 13 οχήματα σε 8 ομάδες χρέωσης, με Stripe overlay checkout, LOW/HIGH seasonal pricing και per-vehicle ασφάλιση. Στις 8 εβδομάδες περιλαμβάνεται όλο το pricing matrix, ο 4-layer sync και 489 audit checkpoints. Από εκεί και μετά τρέχει ongoing maintenance όταν αλλάζει στόλος ή τιμές.

Πώς γίνεται sync μεταξύ booking site, panel και iOS app για να μην εμφανίζονται διπλές κρατήσεις;

Στήσαμε δικό μας PHP Bridge v1.14.1 που κρατάει ένα single source of truth (events.price) και μέσω REST hooks κρατάει σε sync τα events, το calendar metadata, τα ACF fields του οχήματος, το theme display, το panel και το iOS app. Όταν αλλάζει τιμή ή διαθεσιμότητα από οποιοδήποτε σημείο, οι υπόλοιπες 5 πηγές ενημερώνονται αυτόματα στο ίδιο write. Δεν υπάρχει manual sync ή cron που να αφήνει παράθυρο για double booking.

Πώς διαχειρίζεται το σύστημα διαφορετικές τιμές για 5ήμερο πακέτο και 6+ ημέρες ενοικίασης;

Κάθε από τις 8 ομάδες οχημάτων έχει configured rates για 1day, 5d package, 6th day and over, και full insurance per day, σε 2 εποχές (LOW και HIGH 15/6 ως 30/9). Όταν ο πελάτης διαλέγει ημερομηνίες, ο calculator εφαρμόζει το σωστό tier αυτόματα και το breakdown φαίνεται στο checkout dropdown με per_day rates, 5d package, extras για 6+ ημέρες, ασφάλιση και VAT-included note. Έτσι αποφεύγεται η λάθος χρέωση που προκύπτει σε Excel-based tariffs.

Είναι το Stripe checkout overlay branded ή κάνει redirect σε εξωτερική σελίδα;

Ο χρήστης δε φεύγει ποτέ από το jk-tours.gr. Το Stripe checkout τρέχει σε branded full-page overlay μέσα στο site, με Πίσω και Close buttons που κρατάνε το modal state ώστε αν φύγει ο πελάτης από το payment step να μη χάσει τις επιλογές του. Το ίδιο overlay δουλεύει σε EL/EN, με transparent cost breakdown για να βλέπει ο πελάτης ακριβώς γιατί πληρώνει το ποσό που πληρώνει.

Πώς ξέρετε ότι δε σπάει η λογική τιμολόγησης μετά από αλλαγές;

Έχουμε φτιάξει 489-test audit suite που τρέχει end-to-end pricing parity σε modal, Stripe, panel και iOS app, για όλα τα οχήματα και τις 2 εποχές, με και χωρίς ασφάλιση. Μετά από κάθε deployment η suite τρέχει και απαιτούμε 489/489 pass πριν θεωρηθεί stable. Έτσι αλλαγή σε ένα group δεν μπορεί να σπάσει σιωπηλά τιμολόγηση σε άλλο.

Παρόμοιο project σε εξέλιξη;

Αν χτίζεις κάτι παρόμοιο και ψάχνεις partner που να ξέρει το τεχνικό terrain, πες μας. 30λεπτη συζήτηση χωρίς δέσμευση.