Πίσω στις Μελέτες Έργων
Τουρισμός / Κρατήσεις Καταλυμάτων Cretico

Cretico, ανακατασκευή πλατφόρμας κρατήσεων

Η Cretico πουλάει βίλες με ιδιωτική πισίνα στην Κρήτη από το 2014. Η πλατφόρμα της ξαναχτίστηκε από το μηδέν: νέο front end, πραγματικό σύστημα κρατήσεων με Stripe, back office για το γραφείο, και αρχιτεκτονική που φροντίζει η σελίδα να διαβάζεται εξίσου καλά από έναν επισκέπτη και από μια μηχανή AI.

0,12 δευτ. Απόκριση διακομιστή
368 Σελίδες server-rendered
11 Ερωτήσεις FAQ σε JSON-LD

Η Πρόκληση

Η παλιά πλατφόρμα ήταν custom PHP 7.4 χωρίς framework, γραμμένη στο χέρι και εξελιγμένη επί μια δεκαετία. Δούλευε. Τα όριά της όμως είχαν πάψει να είναι τεχνικά και είχαν γίνει εμπορικά.

Τέσσερα πράγματα στέκονταν εμπόδιο σε κάθε κράτηση:

  • Ένα μόνο εισερχόμενο ημερολόγιο ανά βίλα. Ιδιοκτήτης με καταχώρηση σε δύο OTA δεν μπορούσε να ενώσει τις διαθεσιμότητές του, οπότε το ημερολόγιο ξέφευγε από την πραγματικότητα.
  • Καμία άμεση κράτηση. Κάθε διαμονή ήταν αίτημα και συζήτηση, τη στιγμή που Airbnb και Booking κλείνουν μέσα σε ένα λεπτό.
  • Όροι πληρωμής και ακύρωσης καθολικοί για όλους, οπότε κανένας ιδιοκτήτης δεν μπορούσε να ορίσει δικούς του.
  • Checkout με ανακατεύθυνση σε σελίδα τράπεζας, δηλαδή απώλεια επισκεπτών ακριβώς στο τελευταίο βήμα.

Και από πάνω, μια δεκαετία συσσωρευμένου SEO απλωμένη σε 609 διευθύνσεις, που δεν επιτρεπόταν να σπάσουν.

Η αναζήτηση άλλαξε όσο χτιζόταν

Όταν ξεκίνησε η ανακατασκευή, το ερώτημα ήταν πώς κατατάσσεται η σελίδα στη Google. Μέχρι να τελειώσει, το ερώτημα είχε γίνει άλλο: πώς διαβάζεται από ChatGPT, Perplexity και Google AI Overviews.

Αυτό άλλαξε δύο αποφάσεις αρχιτεκτονικής, και τις άλλαξε νωρίς, όσο κόστιζαν ακόμα φθηνά:

  • Οι crawlers των μηχανών AI δεν εκτελούν JavaScript. Ό,τι δεν υπάρχει στο HTML της πρώτης απόκρισης, δεν υπάρχει καθόλου. Άρα κάθε σελίδα αποδίδεται στον διακομιστή, όχι στον browser.
  • Τα δομημένα δεδομένα έπαψαν να είναι διακόσμηση για rich results. Έγιναν δρόμος εισόδου: η Google πλέον χτίζει καταχώρηση καταλύματος διαβάζοντας το JSON-LD της ίδιας της σελίδας.

Η Λύση

Next.js 16 με Payload 3 πάνω από managed PostgreSQL. Ένα application με δύο πρόσωπα: τον δημόσιο ιστότοπο όπου κλείνει ο επισκέπτης, και το back office όπου δουλεύει καθημερινά το γραφείο. Όλα σε έναν managed server, με pm2 μπροστά και Cloudflare για TLS.

Η μετάβαση από την παλιά βάση δεν έγινε μία φορά και τέλος. Έγινε ETL που ξανάτρεχε κάθε ώρα όσο η παλιά πλατφόρμα συνέχιζε να δέχεται κρατήσεις, με έλεγχο που μετράει κάθε οντότητα και στις δύο πλευρές και κόβει το deploy αν λείπει έστω μία εγγραφή.

Κατασκευάστηκε με:

Next.js 16React 19Payload 3PostgreSQLStripeTypeScriptBrevo

Το σύστημα κρατήσεων

Τρεις δρόμοι προς μια κράτηση. Η διαφορά τους δεν είναι η οθόνη, είναι τι κάνει ο καθένας στα χρήματα και τι κάνει στο ημερολόγιο.

Απλό ερώτημα

Δεν αγγίζει ούτε κάρτα ούτε ημερολόγιο. Ανοίγει συζήτηση και τίποτα άλλο.

Αίτημα κράτησης

Η προεπιλογή. Η κάρτα δεσμεύεται χωρίς να χρεωθεί και οι ημερομηνίες κρατιούνται για 24 ώρες. Έγκριση σημαίνει χρέωση προκαταβολής, άρνηση σημαίνει άμεση αποδέσμευση.

Άμεση κράτηση

Χρέωση με την επιβεβαίωση και ημερομηνίες κλειδωμένες επιτόπου, στις βίλες όπου το επιτρέπει ο ιδιοκτήτης.

Από κάτω, πέντε κανόνες που δεν παραβιάζονται:

  • Το ποσό υπολογίζεται πάντα στον διακομιστή. Τιμή που φτάνει από τον browser είναι τιμή που μπορεί να πειράξει ο επισκέπτης.
  • Το webhook του Stripe επιβεβαιώνει την κράτηση, όχι ο browser. Όποιος πληρώσει και κλείσει την καρτέλα, έχει κράτηση.
  • Το Payment Element είναι ενσωματωμένο μέσα στη σελίδα. Καμία ανακατεύθυνση σε τράπεζα, πουθενά.
  • Προκαταβολή τώρα, υπόλοιπο αυτόματα αργότερα, με υπενθύμιση στον επισκέπτη πριν φύγει η χρέωση.
  • Οι επιστροφές υπολογίζονται από τον κώδικα και εκτελούνται από άνθρωπο. Καμία αυτόματη επιστροφή χρημάτων.

Τι τρέχει χωρίς να το ζητήσει κανείς

Δέκα προγραμματισμένες εργασίες στον server, η καθεμιά με κλείδωμα και χρονικό όριο ώστε να μην πατάει η μία την άλλη.

Συγχρονισμός ημερολογίων, κάθε 15 λεπτά

158 iCal feeds από Airbnb, VRBO και Booking. Αν έστω ένα feed μιας βίλας δεν απαντήσει καθαρά, η βίλα δεν περνάει στο νέο σύστημα: άδειο ημερολόγιο δεν σημαίνει ελεύθερη βίλα.

Λήξη δεσμεύσεων, κάθε 10 λεπτά

Αίτημα που δεν απάντησε κανείς μέσα σε 24 ώρες λύνεται μόνο του. Πρώτα αποδεσμεύεται η κάρτα στο Stripe, μετά ακυρώνεται η κράτηση, μετά ειδοποιείται ο επισκέπτης. Με αυτή τη σειρά.

Συμφωνία πληρωμών, κάθε 10 λεπτά

Πιάνει πληρωμές που το webhook δεν παρέδωσε ποτέ. Προχωράει μια κράτηση μόνο μπροστά, ποτέ πίσω.

Χρέωση υπολοίπων, καθημερινά

Υπενθύμιση τέσσερις μέρες νωρίτερα, χρέωση την ημέρα που λήγει το υπόλοιπο. Χρεώνει το ποσό που καταγράφηκε τότε, όχι νέα τιμή.

Πρωινή σύνοψη στο γραφείο

Φεύγει μόνο όταν υπάρχει κάτι που χρειάζεται άνθρωπο. Αλλιώς δεν φεύγει καθόλου, γιατί ειδοποίηση που έρχεται κάθε μέρα παύει να διαβάζεται.

Watchdog, κάθε 5 λεπτά

Επανεκκινεί την εφαρμογή αν το pm2 δεν τη δηλώσει ζωντανή, και ξανά στην εκκίνηση του μηχανήματος.

Ταχύτητα, SEO και ορατότητα σε μηχανές AI

609 διευθύνσεις, αντιστοιχισμένες μία προς μία

Καταγράφηκαν από τα sitemap της παλιάς πλατφόρμας πριν γραφτεί γραμμή κώδικα. Οι σελίδες των βιλών κράτησαν το αριθμητικό τους αναγνωριστικό μέσα στη διεύθυνση, οπότε δεν άλλαξαν καθόλου. Αυτόματος έλεγχος επιβεβαιώνει ότι ο χάρτης ανακατευθύνσεων στέκει.

15 τύποι schema, από μία πηγή

VacationRental με AggregateOffer, GeoCoordinates, PostalAddress, amenityFeature και aggregateRating, συν BreadcrumbList, ItemList και FAQPage. Όλα βγαίνουν από ένα αρχείο, όχι σκορπισμένα μέσα στα templates.

Η τιμή δεν γίνεται να διαφωνήσει με τον εαυτό της

Η τιμή που διαβάζει ο άνθρωπος και η τιμή που διαβάζει η μηχανή βγαίνουν από το ίδιο πεδίο. Το ίδιο ισχύει και για τον αριθμό μητρώου του καταλύματος.

55 αυτόματοι έλεγχοι

Ανάμεσά τους ένας που επιβεβαιώνει ότι η σελίδα και τα δομημένα δεδομένα της λένε το ίδιο πράγμα, και ένας που περνάει ολόκληρη τη διαδρομή των χρημάτων με πραγματική δοκιμαστική κάρτα.

Αποτελέσματα

Μετρική Πριν Μετά
Απόκριση διακομιστή PHP 7.4 χωρίς framework 0,12 δευτ.
Απόδοση σελίδων εξαρτημένη από JavaScript 368 σελίδες server-rendered
Ημερολόγια ανά βίλα 1 όσα feeds έχει ο ιδιοκτήτης
Πληρωμή ανακατεύθυνση σε τράπεζα Stripe μέσα στη σελίδα
Άμεση κράτηση καμία ενεργή, ανά βίλα
Δομημένα δεδομένα ελάχιστα 15 τύποι σε κάθε σχετική σελίδα

Τα νούμερα ταχύτητας και δομημένων δεδομένων μετρήθηκαν στο live creti.co στις 17 Σεπτεμβρίου 2026. Η υπόλοιπη στήλη περιγράφει τι άλλαξε αρχιτεκτονικά, όχι εμπορικό αποτέλεσμα.

Next.jsPayload CMSStripePostgreSQLSEOGEOiCalΑυτοματισμοί
Live

Δείτε το αποτέλεσμα

Η πλατφόρμα τρέχει στο creti.co, με τις κρατήσεις, τις πληρωμές και τους αυτοματισμούς που περιγράφονται εδώ.

Επισκεφθείτε το creti.co

Έχετε πλατφόρμα που έφτασε στα όριά της;

Ας δούμε τι κρατάμε, τι ξαναγράφεται και πώς γίνεται η μετάβαση χωρίς να χαθεί τίποτα από όσα έχετε χτίσει.