Ελληνικά
Όλα τα άρθρα
Τεχνολογία8 λεπτά ανάγνωσης

Το tech stack που χρησιμοποιούμε το 2026 (και γιατί)

Καθαρή εικόνα των εργαλείων, των frameworks και των υποδομών με τα οποία βγάζουμε προϊόντα στην παραγωγή, και το σκεπτικό πίσω από κάθε επιλογή.

Συντάκτης: Achilleas Tsoumitas
TypeScript
React
Next.js
Node.js
MongoDB
PostgreSQL
GraphQL
AWS
Stripe
Expo

Γιατί έχει νόημα να το γράψουμε

Κάθε εταιρεία βάζει λογότυπα εργαλείων στο site της. Λίγες εξηγούν γιατί διάλεξαν αυτά και όχι άλλα. Μετά από έξι χρόνια που φτιάχνουμε προϊόντα, δικά μας και για πελάτες, έχουμε καταλήξει σε ένα stack που βελτιστοποιεί για ένα πράγμα: να βγάζουμε ποιοτικό λογισμικό γρήγορα.

Δεν είναι λίστα με τα «καλύτερα εργαλεία». Είναι ό,τι χρησιμοποιούμε στην πράξη, σε παραγωγή, σε έργα όπως το Roomismo (το δικό μας σύστημα διαχείρισης καταλυμάτων), το bid2board (marketplace μεταφορών) και τις ψηφιακές πλατφόρμες της ADCB και της JP Morgan. Ακολουθεί η πλήρης εικόνα.

TypeScript σε όλα

Το TypeScript είναι η βάση για όλα όσα φτιάχνουμε. Frontend, backend, configuration υποδομών, όλα σε TypeScript.

Το σκεπτικό είναι απλό: με μία γλώσσα σε όλο το stack, οποιοσδήποτε μηχανικός της ομάδας μπορεί να κάνει debug σε οποιοδήποτε επίπεδο. Οι τύποι πιάνουν τα bugs στο compile και όχι στις τρεις τα ξημερώματα στην παραγωγή. Και όταν φτιάχνεις ένα MVP με πίεση χρόνου, το τελευταίο που χρειάζεσαι είναι να αλλάζεις γλώσσα κάθε φορά που αλλάζεις αρχείο.

Περάσαμε από JavaScript σε TypeScript το 2021 και δεν το μετανιώσαμε στιγμή. Ο χρόνος που επενδύεις στους τύπους στην αρχή επιστρέφεται μέσα στην πρώτη εβδομάδα κάθε έργου.

React και Next.js στο frontend

Το React είναι το UI layer μας. Το Next.js είναι ο τρόπος με τον οποίο το βγάζουμε στον αέρα.

Το Next.js μας δίνει server-side rendering για τις σελίδες που εξαρτώνται από το SEO, static generation για site παρουσίασης και ένα καθαρό layer από API routes που συχνά μας γλιτώνει από ξεχωριστή backend υπηρεσία. Ο App Router, που μπήκε στο Next.js 13 και πλέον είναι ώριμος, μας επιτρέπει να κρατάμε το data fetching δίπλα στα components, κάτι που απλοποιεί δραματικά τον κώδικα.

Για μια νέα επιχείρηση αυτό μεταφράζεται σε λιγότερα κινούμενα μέρη, ταχύτερο φόρτωμα και καλύτερη θέση στις αναζητήσεις, με ένα μόνο deployment σε Vercel ή AWS.

Node.js στο backend

Όταν χρειαζόμαστε αυτόνομο backend, για συστήματα πραγματικού χρόνου, για σύνθετη επιχειρηματική λογική ή για microservices, πάμε σε Node.js με Express ή Fastify.

Το προφανές κέρδος είναι το κοινό οικοσύστημα TypeScript: κοινοί τύποι μεταξύ frontend και backend, κοινά schemas για validation (χρησιμοποιούμε Zod) και κοινές βιβλιοθήκες. Το Node.js είναι όμως και εξαιρετικό σε φορτία με πολύ I/O, που περιγράφουν τα περισσότερα από αυτά που φτιάχνουμε: API που μιλούν σε βάσεις δεδομένων, σε υπηρεσίες τρίτων και σε παρόχους πληρωμών.

Στον channel manager του Roomismo, που κρατά ζωντανές συνδέσεις με πάνω από 50 OTA (Booking.com, Airbnb, Expedia και άλλα), η event-driven αρχιτεκτονική του Node σηκώνει χιλιάδες ταυτόχρονα webhooks χωρίς να ιδρώσει.

MongoDB και PostgreSQL

Χρησιμοποιούμε και τα δύο, και η επιλογή εξαρτάται από το έργο.

Το MongoDB είναι η προεπιλογή μας για MVP και για προϊόντα όπου το μοντέλο δεδομένων εξελίσσεται ακόμη. Το ευέλικτο schema μας αφήνει να δουλεύουμε γρήγορα χωρίς πονοκεφάλους με migrations. Το Roomismo, το Quickord και το Ridebly τρέχουν όλα σε MongoDB.

Το PostgreSQL μπαίνει όταν χρειαζόμαστε σχεσιακή ακεραιότητα, σύνθετα queries ή όταν το ζητά ο κλάδος του πελάτη: FinTech, τράπεζες, οτιδήποτε με συναλλαγές που θέλουν εγγυήσεις ACID. Η πλατφόρμα digital banking της ADCB τρέχει σε PostgreSQL.

Δεν διαλέγουμε ποτέ βάση για ιδεολογικούς λόγους. Διαλέγουμε εκείνη που ταιριάζει στο πρόβλημα.

GraphQL και REST

Άλλη μία επιλογή που κρίνεται κατά περίπτωση. Η προεπιλογή μας είναι το REST: πιο απλό, πιο κατανοητό από όλους και αρκετό για το 80% των έργων.

Το GraphQL δικαιώνει τη θέση του όταν το frontend χρειάζεται ευελιξία πάνω σε σύνθετα, ένθετα δεδομένα. Αν η εναλλακτική είναι δεκαπέντε REST endpoints που επιστρέφουν το καθένα λίγο διαφορετική μορφή των ίδιων δεδομένων, κερδίζει το GraphQL. Το έχουμε δουλέψει πολύ σε έργα με πλούσια dashboards, όπου κάθε οθόνη θέλει άλλο κομμάτι από τις ίδιες οντότητες.

Και στις δύο περιπτώσεις χρησιμοποιούμε TypeScript από άκρη σε άκρη με generated types, ώστε το συμβόλαιο του API να ελέγχεται πάντα στο compile.

React Native και Expo για mobile

Όταν ένας πελάτης χρειάζεται εφαρμογή κινητού μαζί με την web πλατφόρμα του, η απάντησή μας είναι React Native με Expo.

Η επαναχρησιμοποίηση κώδικα από τις web εφαρμογές μας σε React είναι σημαντική: δεν μοιραζόμαστε μόνο components, αλλά και επιχειρηματική λογική, API clients, schemas για validation και ορισμούς τύπων. Για μια επιχείρηση που βγάζει ταυτόχρονα web και mobile, αυτό μπορεί να κόψει 30 με 40% από τον χρόνο ανάπτυξης.

Το Expo έχει ωριμάσει εντυπωσιακά. Το EAS Build αναλαμβάνει το CI/CD, τα push notifications δουλεύουν χωρίς παραμετροποίηση και το hot reload κάνει την καθημερινή δουλειά πραγματικά γρήγορη. Με αυτό το stack φτιάξαμε τις εφαρμογές επιβάτη και οδηγού του Ridebly.

AWS για τις υποδομές

Κάνουμε deploy σε AWS: EC2, ECS, S3, CloudFront, RDS, Lambda, τα γνωστά.

Για πιο απλά έργα, όπως site παρουσίασης και landing pages, χρησιμοποιούμε Vercel· είναι ο γρηγορότερος δρόμος από τον κώδικα στην παραγωγή για εφαρμογές Next.js. Για οτιδήποτε θέλει δική του υποδομή όμως, background workers, WebSocket servers, managed βάσεις ή pipelines επεξεργασίας αρχείων, η απάντηση είναι το AWS.

Τις υποδομές τις περιγράφουμε σε Terraform, που σημαίνει ότι κάθε περιβάλλον (dev, staging, production) είναι αναπαραγώγιμο και υπό έλεγχο εκδόσεων. Χωρίς servers που ξέρει μόνο ένας πώς σηκώθηκαν.

Stripe για τις πληρωμές

Κάθε προϊόν μας που διαχειρίζεται χρήματα δουλεύει με Stripe. Το Roomismo εισπράττει πληρωμές επισκεπτών, το Quickord παραγγελίες εστίασης, και αρκετά έργα πελατών χρησιμοποιούν Stripe Connect για πληρωμές σε marketplace.

Το API του Stripe είναι το μέτρο σύγκρισης στην εμπειρία του προγραμματιστή. Τα webhooks του είναι αξιόπιστα, η τεκμηρίωση εξαιρετική, και η συμμόρφωση που αναλαμβάνει (PCI, SCA, 3D Secure) μας γλιτώνει μήνες δουλειάς.

Έχουμε φτιάξει custom υλοποιήσεις Stripe για συνδρομές, για μεμονωμένες πληρωμές, για διαμοιρασμό εσόδων σε marketplace και για έκδοση τιμολογίων. Στο σημείο που βρισκόμαστε, θα μπορούσαμε να τα κάνουμε με κλειστά μάτια.

Τι αποφεύγουμε συνειδητά

Οι επιλογές για το τι μένει έξω είναι εξίσου σημαντικές με το τι μπαίνει μέσα.

Δεν χρησιμοποιούμε Python ή Django για web εφαρμογές· το TypeScript παντού κρατά τα πράγματα απλά. Δεν βάζουμε Kubernetes στα περισσότερα έργα, γιατί είναι υπερβολή για το μέγεθος στο οποίο κινούνται οι περισσότερες νέες επιχειρήσεις. Δεν ξεκινάμε με microservices από συνήθεια: ένα καλοδομημένο monolith βγαίνει γρηγορότερα και κάνει πιο εύκολο το debugging. Και δεν κυνηγάμε κάθε νέο framework, γιατί υιοθετούμε εργαλεία όταν έχουν αποδειχθεί, όχι όταν είναι της μόδας.

Η βαρετή τεχνολογία που δουλεύει κερδίζει τη συναρπαστική που μπορεί και να δουλέψει.

Σε δύο λόγια

Το stack μας δεν είναι επαναστατικό. Είναι συνειδητά συμβατικό: TypeScript, React, Next.js, Node.js, MongoDB ή PostgreSQL, AWS. Εργαλεία mainstream, με καλή υποστήριξη, τεράστια οικοσυστήματα και πολύ κόσμο που τα ξέρει καλά.

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

Βελτιστοποιούμε για ταχύτητα στην ανάπτυξη, για συντηρησιμότητα στο χρόνο και για εύκολη παράδοση. Κάθε εργαλείο στο stack μας εξυπηρετεί αυτόν τον στόχο.