Πώς είναι χτισμένο, και γιατί δεν πέφτει.How it is built, and why it stays up.
Δεν χρειάζεται να είσαι μηχανικός για να διαβάσεις αυτή τη σελίδα. Είναι εδώ επειδή, όταν εμπιστεύεσαι σε ένα πρόγραμμα τα χρήματα μιας βραδιάς, δικαιούσαι να ξέρεις πώς είναι φτιαγμένο.You do not need to be an engineer to read this page. It exists because when you trust software with a night’s takings, you are entitled to know how it is made.
ΤΟΠΙΚΟΣ SERVERLOCAL SERVER
mini PC · Windows · χωρίς ίντερνετmini PC · Windows · no internet
- Ουρά παραγγελιώνOrder queueμία τη φορά, πάνταone at a time, always
- Απόθεμα & τιμολόγησηStock & pricingατομικές πράξεις, ακέραια λεπτάatomic writes, whole cents
- Βάση δεδομένωνDatabaseποτέ εκτεθειμένη στο δίκτυοnever exposed to the LAN
- Ημερολόγιο ελέγχουAudit logαλυσίδα που δεν σπάει σιωπηλάa chain that cannot break quietly
Κόψε εδώ το καλώδιο του ίντερνετ. Τίποτα από τα παραπάνω δεν σταματά.Cut the internet cable here. Nothing above stops.
- Άδεια χρήσηςLicensing
- Κρυπτογραφημένα αντίγραφαEncrypted backups
- ΕνημερώσειςUpdates
- Τεχνικά σφάλματαTechnical errors
Καμία παραγγελία, κανένας πελάτης, κανένα ποσό δεν περνά από εδώ.No order, no customer, no amount ever passes through here.
Πέντε επιλογές που κάνουν όλη τη διαφορά.Five choices that make the whole difference.
Καθεμιά λύνει ένα πρόβλημα που κάποιος πλήρωσε ακριβά πριν λυθεί.Each one solves a problem somebody paid for before it was solved.
Ο server ζει μέσα στο μαγαζίThe server lives in the venue
Οι συσκευές δεν στέλνουν παραγγελίες στην άλλη άκρη της Ευρώπης για να γυρίσουν πίσω. Μιλούν με έναν υπολογιστή δέκα μέτρα μακριά, στο δικό σου WiFi. Γι’ αυτό η καθυστέρηση μετριέται σε χιλιοστά του δευτερολέπτου, και γι’ αυτό η πτώση του ίντερνετ είναι απλώς μια ένδειξη στην οθόνη.Devices do not send orders across Europe and back. They talk to a computer ten metres away on your own WiFi. That is why latency is measured in milliseconds, and why losing the internet is just an indicator on screen.
Ώθηση, όχι ερώτησηPush, not poll
Οι οθόνες δεν ρωτούν κάθε λίγο «έχει τίποτα καινούριο;». Ο server τους στέλνει την αλλαγή τη στιγμή που συμβαίνει, μέσα από μόνιμη σύνδεση. Έτσι η κουζίνα βλέπει την παραγγελία αμέσως, και τριάντα συσκευές δεν πνίγουν το δίκτυο με ερωτήσεις.Screens do not keep asking “anything new?”. The server pushes each change the moment it happens over a persistent connection. The kitchen sees the order immediately, and thirty devices do not drown the network in questions.
Μία παραγγελία τη φοράOne order at a time
Είκοσι άνθρωποι μπορούν να πατήσουν «ολοκλήρωση» το ίδιο δευτερόλεπτο. Ο server τις βάζει σε σειρά και εκτελεί μία. Ακούγεται αργό, δεν είναι: η καθεμιά παίρνει χιλιοστά. Είναι όμως ο μόνος τρόπος να μη γίνει η τελευταία μερίδα δύο μερίδες.Twenty people can hit “complete” in the same second. The server queues them and runs one. It sounds slow; it is not: each takes milliseconds. It is the only way the last portion never becomes two.
Τα χρήματα είναι ακέραια λεπτάMoney is whole cents
Οι υπολογιστές δεν προσθέτουν δεκαδικούς με ακρίβεια, και το κλασικό αποτέλεσμα είναι ένα ταμείο που στο τέλος της βραδιάς λείπει ένα λεπτό, μετά δύο. Εδώ κάθε ποσό είναι ακέραιος αριθμός λεπτών από την αρχή ως το τέλος. Τα ευρώ υπάρχουν μόνο για να τα διαβάζεις.Computers do not add decimals exactly, and the classic result is a drawer that is a cent short by close, then two. Here every amount is a whole number of cents from end to end. Euros exist only for reading.
Η τιμή έρχεται από τη βάσηPrices come from the database
Το κινητό λέει «θέλω δύο σουβλάκια», όχι «θέλω δύο σουβλάκια προς ένα ευρώ». Η τιμή, οι προσθήκες και ο ΦΠΑ υπολογίζονται στον server από τον επίσημο κατάλογο. Ένα πειραγμένο κινητό ή ένα σφάλμα στην εφαρμογή δεν μπορούν να αλλάξουν ποσό.A phone says “two souvlaki”, never “two souvlaki at one euro”. Price, modifiers and VAT are computed on the server from the official menu. A tampered phone or an app bug cannot change an amount.
Η ουρά που σώζει τη βραδιάThe queue that saves the night
Αν κοπεί το WiFi στη μέση, η παραγγελία γράφεται πρώτα στη συσκευή του σερβιτόρου και μόνο μετά καθαρίζει το καλάθι. Όταν γυρίσει το σήμα, φεύγουν όλες με τη σειρά που πάρθηκαν, καθεμιά με μοναδικό κλειδί ώστε να μην καταχωρηθεί δύο φορές. Αυτό που δεν κάνει: η κουζίνα δεν βλέπει τίποτα όσο η συσκευή είναι εκτός. Το λέμε καθαρά, γιατί δεν γίνεται αλλιώς.If the WiFi drops mid-service, the order is written to the waiter’s device first and only then is the cart cleared. When signal returns they all go out in the order they were taken, each with a unique key so nothing is recorded twice. What it does not do: the kitchen sees nothing while that device is offline. We say so plainly, because there is no way around it.
Βαρετές, δοκιμασμένες τεχνολογίες.Boring, proven technology.
Τίποτα πειραματικό σε μηχάνημα που κρατά τα λεφτά μιας βραδιάς.Nothing experimental on a machine that holds a night’s takings.
Node.js
Ο server. Ένα νήμα, χιλιάδες ταυτόχρονες συνδέσεις, χωρίς κατανάλωση μνήμης ανά συσκευή.The server. One thread, thousands of concurrent connections, no per-device memory cost.
Socket.IO
Η μόνιμη σύνδεση με αυτόματη επανασύνδεση, δοκιμασμένη σε κακό WiFi και σε iOS που κλειδώνει οθόνη.The persistent connection with automatic reconnect, tested on bad WiFi and on iOS locking the screen.
MongoDB
Η βάση. Ατομικές αυξομειώσεις αποθέματος σε επίπεδο βάσης, ώστε να μη χρειάζεται η εφαρμογή να «προσέχει».The database. Atomic stock changes at database level, so the application never has to “be careful”.
React
Το περιβάλλον χρήσης. Ανοίγει στον browser κάθε συσκευής, χωρίς εγκατάσταση και χωρίς app store.The interface. It opens in any device’s browser, with no install and no app store.
Windows Service
Το σύστημα ξεκινά με το μηχάνημα και επανεκκινεί μόνο του, χωρίς να χρειάζεται κάποιος να ανοίξει παράθυρο.The system starts with the machine and restarts itself, with nobody needing to open a window.
ESC/POS + CP737
Το πρωτόκολλο των θερμικών εκτυπωτών, με τη σωστή κωδικοσελίδα ώστε τα ελληνικά να είναι ελληνικά.The thermal printer protocol, with the right code page so Greek prints as Greek.
Ed25519 / X25519
Υπογραφές για τις ενημερώσεις και τις άδειες, κρυπτογράφηση για τα αντίγραφα ασφαλείας.Signatures for updates and licences, encryption for backups.
Caddy
Η μοναδική δημόσια πόρτα, με πιστοποιητικά που ανανεώνονται μόνα τους. Το μαγαζί δεν εκτίθεται ποτέ.The only public door, with certificates that renew themselves. The venue is never exposed.
Τι σημαίνει «ασφαλές» εδώ, στην πράξη.What “secure” means here, in practice.
Η επιφάνεια επίθεσης είναι ένα τοπικό δίκτυοThe attack surface is one local network
Το σύστημα δεν έχει δημόσια διεύθυνση. Για να το πλησιάσει κάποιος, πρέπει πρώτα να μπει στο WiFi του μαγαζιού σου. Η βάση δεδομένων δεν είναι προσβάσιμη ούτε από εκεί: ζει σε εσωτερικό δίκτυο που δεν βλέπουν τα tablet.The system has no public address. To reach it, somebody must first be on your venue WiFi. The database is not reachable even from there: it lives on an internal network the tablets cannot see.
Κάθε σύνδεση ελέγχεται πριν σταλεί δεδομένοEvery connection is checked before any data
Η μόνιμη σύνδεση πραγματικού χρόνου περνά από έλεγχο ταυτότητας πριν λάβει το πρώτο byte. Ένας διαχειριστής μπορεί να πετάξει έξω μια συσκευή αμέσως, χωρίς να περιμένει να λήξει κάποιο κλειδί.The real-time connection is authenticated before it receives a single byte. An administrator can eject a device immediately, without waiting for a token to expire.
Τα ευαίσθητα σημεία δεν αλλάζουν εύκολαThe sensitive parts do not change easily
Η πιστοποίηση, η ουρά παραγγελιών, η αρίθμηση, το απόθεμα και η αλυσίδα ενημερώσεων είναι σημειωμένα ως προστατευμένες ζώνες. Καμία αλλαγή σε αυτά δεν περνά χωρίς ξεχωριστό έλεγχο, και καθεμιά έχει δικούς της αυτοματοποιημένους ελέγχους.Authentication, the order queue, numbering, stock and the update chain are marked as protected zones. No change lands there without a separate review, and each has its own automated checks.
Γιατί δεν χρησιμοποιούμε HTTPS μέσα στο μαγαζίWhy we do not use HTTPS inside the venue
Ένα tablet στο 192.168.1.20 δεν μπορεί να πάρει πιστοποιητικό, γιατί κανείς δεν εκδίδει πιστοποιητικά για ιδιωτικές διευθύνσεις. Αντί να προσποιηθούμε ασφάλεια με αυτο-υπογεγραμμένα πιστοποιητικά που μαθαίνουν το προσωπικό να πατά «συνέχεια παρά τον κίνδυνο», κρατάμε το τοπικό δίκτυο απλό και βάζουμε τη σκληρή ασφάλεια στην πόρτα προς το ίντερνετ.A tablet on 192.168.1.20 cannot obtain a certificate, because nobody issues certificates for private addresses. Rather than fake security with self-signed certificates that train staff to click “proceed anyway”, we keep the local network simple and put the hard security on the door to the internet.
Ο εξοπλισμός, χωρίς μαγικά.The hardware, with no magic.
Δεν πουλάμε τίποτα από αυτά και δεν παίρνουμε προμήθεια από κανέναν προμηθευτή. Αγοράζεις όπου βρεις φθηνότερα.We sell none of it and take no commission from any supplier. Buy wherever it is cheapest.
Ένας μικρός υπολογιστήςOne small computer
Windows 11, 8 GB μνήμη, δίσκος SSD. Ένα mini PC των 250 με 350 ευρώ αρκεί για μαγαζί με τριάντα συσκευές. Ιδανικά με UPS, ώστε μια στιγμιαία διακοπή να μη σβήσει τίποτα.Windows 11, 8 GB of memory, an SSD. A 250 to 350 euro mini PC covers a venue with thirty devices. Ideally on a UPS, so a brief cut switches nothing off.
Ένα καλό routerA decent router
Αποκλειστικό WiFi για τη δουλειά, ξεχωριστό από αυτό των πελατών. Σε μεγάλο χώρο, δύο σημεία πρόσβασης. Δεν χρειάζεται σύνδεση στο ίντερνετ για να δουλέψει.A dedicated work WiFi, separate from the guest one. Two access points in a large space. It needs no internet connection to work.
Ό,τι συσκευές έχεις ήδηWhatever devices you own
Κινητά, tablet, laptop, οθόνη αφής: οτιδήποτε με σύγχρονο browser. Προαιρετικά, θερμικοί εκτυπωτές δικτύου για δελτία και αποδείξεις.Phones, tablets, laptops, touchscreens: anything with a modern browser. Optionally, network thermal printers for tickets and receipts.
Θέλεις να το δεις να τρέχει;Want to see it running?
Στην επίδειξη κόβουμε επίτηδες το δίκτυο μπροστά σου και συνεχίζουμε να παίρνουμε παραγγελίες.In the demo we deliberately cut the network in front of you and keep taking orders.
Ή γράψε απευθείας στοOr write directly to support@efaeto.com