Μετάβαση στο τεχνολογικό περιεχόμενο
Επιστροφή στην αρχική σελίδα

Τεχνολογική στοίβα

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

Οι εκδόσεις και οι αριθμοί ελέγχθηκαν τον Οκτώβριο του 2026.

Μετρημένα στα αποθετήρια

υπηρεσίες ConnectRPC με 179 RPC, όλες ορισμένες σε Protobuf
18
εκτελέσιμα Go από μία βάση κώδικα: API, worker, αναμεταδότης outbox, διαχείριση
4
πλατφόρμες από μία εφαρμογή-πελάτη: web, macOS, Windows, Linux, iOS, Android
6
γλώσσες στον δημόσιο ιστότοπο
22
γλώσσες διεπαφής στην εφαρμογή
23
σενάρια δοκιμών end-to-end με Playwright σε απομονωμένη στοίβα
70

Πώς συνδέονται τα κομμάτια

Τρεις εφαρμογές μοιράζονται ένα κοινό edge και ένα cluster. Ο ιστότοπος είναι υπεύθυνος για τη χρέωση και το μητρώο χώρων εργασίας, το backend σε Go για ό,τι συμβαίνει μέσα σε έναν χώρο εργασίας, και η web εφαρμογή επικοινωνεί με το backend μέσω παραγόμενων πελατών ConnectRPC.

Εφαρμογές-πελάτες

Πρόγραμμα περιήγησης

Ιστότοπος και web εφαρμογή

Tauri

Κελύφη για desktop και κινητά

hansa CLI

Σενάρια εντολών και πράκτορες

Edge

Bunny.net CDN

TLS, προσωρινή αποθήκευση, προστασία DDoS

IONOS Managed Kubernetes, Γερμανία

Traefik

Ingress για κάθε εφαρμογή

Web εφαρμογή Vue + Vite

Στατική έκδοση Vue

API του chat

Go με ConnectRPC

  • Worker
  • Αναμεταδότης outbox

Ιστότοπος Laravel + FrankenPHP

Χρέωση, μητρώο, παροχή πόρων

NATS JetStream

Μόνιμα αποθηκευμένες εντολές και συμβάντα

Centrifugo

Διανομή μέσω WebSocket

Valkey Sentinel + HAProxy

Προσωρινή μνήμη, παρουσία, συνεδρίες

LiveKit

Πολυμέσα κλήσεων

Διαχειριζόμενα δεδομένα στην IONOS

MariaDB

Μία βάση δεδομένων ανά χώρο εργασίας και ένα κεντρικό μητρώο

Object Storage S3

Αρχεία και εικόνες προφίλ

Εξωτερικές υπηρεσίες

ElevenLabs · LLM · Clef

Μεταγραφή, μετάφραση, ταξινόμηση

Creem · EmailLabs

Πληρωμές και email

Εκτός του cluster

Cloudflare Workers D1

Εξωτερικοί έλεγχοι κατάστασης

Bunny Storage restic

Κρυπτογραφημένα αντίγραφα ασφαλείας στη Φρανκφούρτη και στη Στοκχόλμη

Η διαδρομή ενός μηνύματος

  1. Η εφαρμογή-πελάτης καλεί την υπηρεσία μηνυμάτων μέσω ConnectRPC.
  2. Το API αποδέχεται το αίτημα μόνο αφού το NATS JetStream έχει αποθηκεύσει μόνιμα την εντολή.
  3. Ένας worker γράφει το μήνυμα και ένα συμβάν outbox στη βάση δεδομένων του χώρου εργασίας σε μία συναλλαγή.
  4. Ο αναμεταδότης outbox δημοσιεύει το οριστικοποιημένο συμβάν στο NATS και στο Centrifugo.
  5. Κάθε ανοιχτή εφαρμογή-πελάτης το λαμβάνει μέσω WebSocket· μετά από διακοπή, οι εφαρμογές-πελάτες φορτώνουν ξανά την έγκυρη κατάσταση από το API.

Backend του chat

Ό,τι συμβαίνει μέσα σε έναν χώρο εργασίας εκτελείται σε Go: μηνύματα, κανάλια, αρχεία, κλήσεις, πραγματικός χρόνος, εισαγωγές και το λειτουργικό πακέτο για επιχειρήσεις καθαρισμού. Ο ιστότοπος δεν αγγίζει ποτέ δεδομένα χώρων εργασίας.

Go 1.26

Τέσσερα εκτελέσιμα από μία αρθρωτή βάση κώδικα: το API, ο worker μηνυμάτων, ο αναμεταδότης outbox και μια προστατευμένη εντολή διαχείρισης. Διανέμονται ως στατικά εκτελέσιμα σε ένα μικρό image.

Γιατί

Μια ισχυρή τυπική βιβλιοθήκη, προβλέψιμη απόδοση και απλός ταυτοχρονισμός ταιριάζουν σε ένα backend από workers που εκτελούνται για μεγάλα διαστήματα. Μία γλώσσα για ολόκληρο τον πυρήνα των χώρων εργασίας τον κρατά συντηρήσιμο από έναν άνθρωπο.

ConnectRPC + Protobuf connect-go 1.20 · buf 1.71

18 υπηρεσίες και 179 RPC ορίζονται σε Protobuf. Το buf παράγει τον διακομιστή Go και τους πελάτες TypeScript με τοπικά πρόσθετα, ώστε κανένα σχήμα να μην εγκαταλείπει το μηχάνημα.

Γιατί

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

Μία βάση δεδομένων ανά χώρο εργασίας MariaDB · sqlc

Κάθε χώρος εργασίας αποκτά τη δική του φυσική βάση δεδομένων MariaDB. Το API εντοπίζει τον χώρο εργασίας από τον τομέα του και ανοίγει την αντίστοιχη δεξαμενή συνδέσεων· οι workers τον εντοπίζουν ξανά μόνοι τους και δεν εμπιστεύονται ποτέ όνομα βάσης δεδομένων από μήνυμα ουράς. Τα ερωτήματα είναι απλή SQL που μεταγλωττίζεται σε τυποποιημένο κώδικα Go με το sqlc.

Γιατί

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

NATS JetStream 2.10

Μόνιμες ροές για εντολές, εργασίες και συμβάντα, καθώς και μια ροή dead-letter. Οι εγγραφές μηνυμάτων εκτελούνται σε 64 διατεταγμένα διαμερίσματα.

Γιατί

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

Συναλλακτικό outbox

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

Γιατί

Κανένα χαμένο ή φανταστικό συμβάν όταν μια διεργασία σταματήσει ανάμεσα στην εγγραφή στη βάση δεδομένων και στη δημοσίευση.

Centrifugo v5

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

Γιατί

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

Αποθήκευση αντικειμένων συμβατή με S3 aws-sdk-go-v2

Τα αρχεία και οι εικόνες προφίλ αποθηκεύονται σε IONOS Object Storage στην ΕΕ και διατίθενται μέσω βραχύβιων υπογεγραμμένων συνδέσμων.

Γιατί

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

LiveKit 1.9

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

Γιατί

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

ElevenLabs Scribe

Μετατροπή ομιλίας σε κείμενο για φωνητικά μηνύματα. Η μεταγραφή επισυνάπτεται στο μήνυμα και είναι αναζητήσιμη και μεταφράσιμη όπως κάθε κείμενο.

Γιατί

Τα συνεργεία πεδίου μιλούν περισσότερο από όσο πληκτρολογούν.

Μετάφραση με LLM

Μετάφραση ανά αναγνώστη μέσω API συμβατού με OpenAI. Κάθε μήνυμα μεταφράζεται κατά απαίτηση, αποθηκεύεται προσωρινά μία φορά ανά γλώσσα-στόχο και παραλείπεται όταν ο αναγνώστης μιλά ήδη τη γλώσσα.

Γιατί

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

Cloudflare Clef

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

Γιατί

Δεν υπάρχει ελεύθερη έξοδος προς ανάλυση. Οι επόπτες βλέπουν τι χρειάζεται προσοχή· η ανάληψη δράσης παραμένει πάντα ανθρώπινη απόφαση.

go-pdf 0.9

Φύλλα χρόνου εργασίας και αναφορές εργασιών σε μορφή A4 δημιουργούνται στον διακομιστή.

Γιατί

Μια βιβλιοθήκη γραμμένη αποκλειστικά σε Go κρατά το image του backend μικρό και χωρίς headless πρόγραμμα περιήγησης.

Sentry + slog

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

Γιατί

Λίγα κινούμενα μέρη προς λειτουργία, και κάθε αποτυχία φτάνει μαζί με το πλαίσιό της.

Εφαρμογές και CLI

Μία εφαρμογή-πελάτης σε Vue εξυπηρετεί το web και πακετάρεται από το Tauri για desktop και κινητά. Ο πελάτης γραμμής εντολών χρησιμοποιεί το ίδιο δημόσιο API με τις εφαρμογές.

Vue 3 + TypeScript Vue 3.5 · TS 5.9 · Pinia 3

Μία ενιαία εφαρμογή-πελάτης με 118 στοιχεία ενός αρχείου (single-file components), stores του Pinia, vue-router και vue-i18n σε 23 γλώσσες διεπαφής, με δοκιμές σε Vitest.

Γιατί

Ένα ώριμο, ευανάγνωστο μοντέλο στοιχείων και αυστηρή TypeScript κάνουν μια μεγάλη εφαρμογή-πελάτη διαχειρίσιμη για μια πολύ μικρή ομάδα.

Vite + Tailwind CSS Vite 8 · Tailwind 4

Το εργαλείο δόμησης και το επίπεδο μορφοποίησης: Tailwind CSS 4 με ανοιχτό και σκούρο θέμα.

Γιατί

Γρήγορη δόμηση και σχεδιαστικά tokens που ακολουθούν την ίδια τεκμηριωμένη παλέτα με τον ιστότοπο.

Tauri 2.10

Πακετάρει την ίδια web εφαρμογή-πελάτη για macOS, Windows, Linux, iOS και Android, με εγγενείς ειδοποιήσεις, deep links και υπογεγραμμένες ενημερώσεις για desktop.

Γιατί

Μία διεπαφή παντού, με το webview του συστήματος αντί να ενσωματώνεται μηχανή προγράμματος περιήγησης σε κάθε εφαρμογή.

Παραγόμενοι πελάτες Connect connect-web 2.1 · protobuf-es 2

Πελάτες TypeScript που παράγονται από το Protobuf του backend και αντιγράφονται στη web εφαρμογή. Δεν επεξεργάζονται ποτέ με το χέρι.

Γιατί

Μια αλλαγή συμβολαίου γίνεται σφάλμα τύπου στην εφαρμογή-πελάτη αντί για έκπληξη στην παραγωγή.

centrifuge-js + livekit-client 5.7 · 2.20

Οι βιβλιοθήκες πελάτη για τον πραγματικό χρόνο του Centrifugo και τις κλήσεις LiveKit.

Γιατί

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

TipTap 3.22

Ο συντάκτης μηνυμάτων, με αναφορές, συνδέσμους και μπλοκ κώδικα με επισήμανση σύνταξης.

Γιατί

Ένας δομημένος επεξεργαστής αντί για εύθραυστο χειρισμό συμβολοσειρών.

hansa CLI Go 1.26 · Cobra

Ένας πελάτης γραμμής εντολών χωρίς κατάσταση για ανθρώπους, σενάρια εντολών και πράκτορες LLM. Έξοδος JSON από προεπιλογή, διαπιστευτήρια στην κλειδοθήκη του λειτουργικού συστήματος και αθροίσματα ελέγχου εκδόσεων υπογεγραμμένα με Minisign.

Γιατί

Χρησιμοποιεί το ίδιο δημόσιο API με τις εφαρμογές. Τα συμβόλαια Protobuf του αντιγράφονται από το backend και κλειδώνονται με κατακερματισμούς SHA-256, ώστε κάθε απόκλιση να εντοπίζεται στο CI.

Ιστότοπος, χρέωση και μητρώο

Το Laravel εκτελεί τον δημόσιο ιστότοπο, την τεκμηρίωση πελατών, την ολοκλήρωση αγοράς, τις συνδρομές και το κεντρικό μητρώο χώρων εργασίας. Δημιουργεί έναν χώρο εργασίας καλώντας το backend σε Go μέσω HTTP με ταυτοποίηση, χωρίς κοινό κώδικα και χωρίς κοινές ουρές.

Laravel + PHP Laravel 12 · PHP 8.5

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

Γιατί

Η χρέωση, τα email, ο προγραμματισμός εργασιών, οι ουρές και οι φόρμες είναι τα δυνατά σημεία του Laravel. Το chat μένει σε Go, και το όριο ανάμεσά τους είναι μία διεπαφή HTTP με ταυτοποίηση.

FrankenPHP 1.13

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

Γιατί

Μία διεργασία εξυπηρετεί την εφαρμογή, και η εκ νέου δόμηση του ίδιου commit παράγει το ίδιο περιβάλλον εκτέλεσης.

Blade + Alpine.js + Tailwind CSS Alpine 3.15 · Tailwind 3.4 · Vite 7

Σελίδες που αποδίδονται στον διακομιστή με μικρά στοιχεία Alpine.js, μορφοποιημένες με Tailwind CSS και πακεταρισμένες από το Vite.

Γιατί

Οι σελίδες περιεχομένου φορτώνουν γρήγορα χωρίς να χρειάζεται framework εφαρμογής μίας σελίδας.

22 γλώσσες

Κάθε δημόσια σελίδα υπάρχει σε 22 γλώσσες της ΕΕ, με URL που φέρουν πρόθεμα γλώσσας, συνδέσμους hreflang και τοπικοποιημένο sitemap. Μια δοκιμή αποτυγχάνει αν σε κάποια γλώσσα λείπει κλειδί ή αν εμφανίζεται αγγλικό κείμενο.

Γιατί

Ένα ευρωπαϊκό προϊόν πρέπει να διαβάζεται στη γλώσσα του αγοραστή από την πρώτη κιόλας σελίδα.

Creem

Ολοκλήρωση αγοράς, φόροι, τιμολόγια και συνδρομές, συγχρονισμένα μέσω υπογεγραμμένων webhooks.

Γιατί

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

EmailLabs

Συναλλακτικά και υπηρεσιακά email, όπως προσκλήσεις, σύνδεσμοι κωδικών πρόσβασης και ειδοποιήσεις.

Γιατί

Ένας πάροχος email από την ΕΕ για ένα προϊόν της ΕΕ.

Pest 4.4

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

Γιατί

Γρήγορες, ευανάγνωστες δοκιμές που εκτελούνται σε κάθε αλλαγή.

Πλατφόρμα και λειτουργία

Τα περιβάλλοντα παραγωγής και προεπισκόπησης εκτελούνται στην IONOS στη Γερμανία. Κάθε εφαρμογή διανέμεται ως container image με το δικό της Helm chart και αναπτύσσεται μέσω χειροκίνητα ενεργοποιούμενης εργασίας GitLab.

IONOS Managed Kubernetes

Clusters παραγωγής και προεπισκόπησης, διαχειριζόμενη MariaDB και Object Storage συμβατό με S3, όλα από γερμανικό πάροχο στη Γερμανία.

Γιατί

Ένας ευρωπαϊκός πάροχος υπό τη δικαιοδοσία της ΕΕ, όχι η ευρωπαϊκή περιοχή ενός μη ευρωπαϊκού cloud.

Helm + Traefik

Κάθε εφαρμογή έχει το δικό της chart. Το Traefik δρομολογεί την κίνηση μέσα στο cluster, και οι μεταναστεύσεις σχήματος των βάσεων δεδομένων των χώρων εργασίας εκτελούνται ως hook πριν από κάθε διάθεση νέας έκδοσης του backend.

Γιατί

Κάθε ανάπτυξη φέρει έκδοση, είναι επαναλήψιμη και αναστρέφεται εύκολα.

Bunny.net

CDN, DNS και προστασία DDoS μπροστά από το cluster, καθώς και ο χώρος αποθήκευσης για τα κρυπτογραφημένα αντίγραφα ασφαλείας.

Γιατί

Μια ευρωπαϊκή εταιρεία λειτουργεί το edge και φυλάσσει τα αντίγραφα ασφαλείας, ώστε κανένα από τα δύο να μην εξαρτάται από μη ευρωπαϊκό cloud.

Valkey + Sentinel + HAProxy Valkey 9.1

Τρία αντίγραφα με εναλλαγή σε εφεδρικό κόμβο μέσω Sentinel και διαμεσολαβητή HAProxy που δείχνει πάντα στον τρέχοντα κύριο κόμβο. Υποστηρίζει την προσωρινή αποθήκευση, τις συνεδρίες, την παρουσία και τον broker πραγματικού χρόνου.

Γιατί

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

restic 0.18

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

Γιατί

Ένα αντίγραφο ασφαλείας μετράει μόνο αφού έχει αποδειχθεί ότι η επαναφορά του λειτουργεί.

GitLab CI

Οι δοκιμές, η δόμηση των images και οι έλεγχοι των Helm charts εκτελούνται στο CI. Οι αναπτύξεις στην προεπισκόπηση και στην παραγωγή είναι ξεχωριστές εργασίες που ενεργοποιούνται χειροκίνητα.

Γιατί

Η αυτοματοποίηση κάνει την επαναλαμβανόμενη δουλειά· ένας άνθρωπος αποφασίζει πότε κάτι φτάνει στους πελάτες.

Γύρω από το προϊόν

Τα εργαλεία που κρατούν μια εταιρεία ενός ατόμου παρατηρήσιμη, προσβάσιμη και κατανοητή.

Cloudflare Workers + D1

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

Γιατί

Η διαθεσιμότητα μετριέται έξω από την υποδομή που περιγράφει.

Umami 3.2

Αυτοφιλοξενούμενα αναλυτικά στοιχεία ιστού που εκτελούνται μόνο αφού ο επισκέπτης έχει κάνει επιλογή συγκατάθεσης.

Γιατί

Τα δεδομένα των επισκεπτών παραμένουν σε υποδομή του HansaChat αντί να τροφοδοτούν ένα διαφημιστικό δίκτυο.

Remotion 4.0

Τα βίντεο του προϊόντος καταγράφονται από την πραγματική εφαρμογή μέσω του εκτελεστή δοκιμών end-to-end και συντίθενται σε κώδικα με φωνητική αφήγηση από AI.

Γιατί

Όταν αλλάζει η διεπαφή, το βίντεο αποδίδεται ξανά αντί να γυριστεί από την αρχή.

TwentyCRM + WireGuard

Ένα αυτοφιλοξενούμενο CRM, προσβάσιμο μόνο μέσω ιδιωτικού VPN.

Γιατί

Τα δεδομένα πωλήσεων δεν εκτίθενται καθόλου στο δημόσιο διαδίκτυο.

Πρακτικές μηχανικής

Οι συνήθειες που επιτρέπουν σε έναν άνθρωπο να παραδίδει ένα προϊόν πολλαπλών πελατών (multi-tenant) χωρίς ξεχωριστή ομάδα QA ή λειτουργίας.

Τα συμβόλαια παράγονται, δεν γράφονται ποτέ με το χέρι

Το Protobuf είναι η μοναδική πηγή για τον διακομιστή Go, τους πελάτες TypeScript και το CLI. Οι γεννήτριες κώδικα είναι κλειδωμένες σε ακριβείς εκδόσεις, και το CLI καταγράφει τον κατακερματισμό κάθε αρχείου συμβολαίου που χρησιμοποιεί.

Οι μεταναστεύσεις τηρούν βιβλίο καταγραφής

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

Δοκιμές end-to-end σε απομονωμένη στοίβα

Μία εντολή εκκινεί τις βάσεις δεδομένων, το NATS, το Valkey, το Centrifugo και την αποθήκευση αντικειμένων σε ελεύθερες θύρες, δομεί τα εκτελέσιμα Go, εκκινεί τη web εφαρμογή και εκτελεί 70 σενάρια Playwright με νέο χώρο εργασίας για κάθε δοκιμή.

Δοκιμές σε κάθε επίπεδο

478 συναρτήσεις δοκιμών σε Go, μεταξύ των οποίων δοκιμές απομόνωσης με δύο χώρους εργασίας, 109 αρχεία Vitest στην εφαρμογή-πελάτη και περισσότερα από 130 αρχεία Pest στον ιστότοπο.

Δικλίδες ασφαλείας στο CI

Έλεγχοι μορφοποίησης, όριο 1.000 γραμμών ανά αρχείο Go και δοκιμές των Helm charts εκτελούνται στο CI μαζί με τις σουίτες δοκιμών.

Χειροκίνητες πύλες ανάπτυξης

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

Αντίγραφα ασφαλείας που αποδεικνύονται με επαναφορές

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

Ένα σύστημα σχεδίασης

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

Με υποστήριξη AI, με ανθρώπινο έλεγχο

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

Διαχείριση ασφάλειας υπό προετοιμασία

Το HansaChat προετοιμάζεται για πιστοποίηση ISO/IEC 27001 με μητρώο κινδύνων, μητρώο τεκμηρίων και ημερολόγιο αποφάσεων. Σήμερα δεν είναι πιστοποιημένο.

Τι ισχυρίζεται αυτή η σελίδα — και τι όχι

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

Ερωτήσεις για την αρχιτεκτονική;

Οι μηχανικοί που αξιολογούν το HansaChat λαμβάνουν άμεσες απαντήσεις από τον άνθρωπο που το δημιούργησε.

Email στον προγραμματιστή