Ιδιωτικό ΚΕΠ e-support Ιωαννίνων
Lead Developer
Δίγλωσσο website για ιδιωτικό ΚΕΠ στα Ιωάννινα: 12 κατηγορίες υπηρεσιών, JSON-LD με ΓΕΜΗ/ΑΦΜ identifiers, AEO layer με build-time llms.txt και markdown mirror, και CI gates σε κάθε βήμα. Από τα design comps ως το Cloudflare production.
Αποτελέσματα
- κατηγορίες υπηρεσιών σε μία σελίδα
- 12
- αναλυτικοί οδηγοί βήμα προς βήμα
- 4
- γλώσσες, με κάθε σελίδα καθρεφτισμένη
- 2

Η κατάσταση
Το e-support είναι ιδιωτικό ΚΕΠ στα Ιωάννινα. Αναλαμβάνει για τον πολίτη τις υποθέσεις που περνούν από τις κρατικές ψηφιακές πύλες, με φυσική παρουσία στην πόλη και εξ αποστάσεως εξυπηρέτηση πανελλαδικά. Χρειαζόταν ένα site που να εξηγεί καθαρά τι αναλαμβάνει, να λέει ρητά ότι δεν είναι δημόσια υπηρεσία, και να στέκεται και στα αγγλικά. Το παρέδωσα ως ο μοναδικός developer, από τα design comps ως το DNS.
Ο επισκέπτης βλέπει αμέσως αν αφορά την υπόθεσή του

Ο κόσμος δεν ψάχνει «ιδιωτικό ΚΕΠ», ψάχνει «σύνταξη», «ΚΕΠΑ», «επίδομα». Οι δώδεκα κατηγορίες είναι γραμμένες με τα λόγια που χρησιμοποιεί ο ίδιος ο επισκέπτης, ώστε να καταλάβει σε δέκα δευτερόλεπτα αν η υπόθεσή του είναι μέσα.
Πώς λειτουργεί
- Οι κατηγορίες είναι περιεχόμενο, όχι κώδικας: κάθε μία είναι ένα αρχείο markdown σε content collection, σε ελληνικά και αγγλικά. Μια νέα κατηγορία είναι ένα νέο αρχείο, όχι αλλαγή σε template.
- Πλήρως στατικό: Astro 7 με Tailwind v4, χωρίς adapter και χωρίς server: κάθε σελίδα σερβίρεται ως αρχείο.
- Γραμματοσειρά από τον ίδιο host: η Commissioner φορτώνει μέσω του Fonts API του Astro, χωρίς αίτημα σε τρίτο.
- Κάρτες OG και λογότυπο: κάρτες ανά διαδρομή για τα πέντε κύρια routes σε δύο γλώσσες, με render μέσω Playwright, και το λογότυπο ανασχεδιασμένο ψηφιακά από το έντυπο σήμα.
Οδηγός για τις υποθέσεις που μπερδεύουν
Τέσσερις από τις δώδεκα κατηγορίες έχουν δική τους σελίδα-οδηγό: ασφαλιστικά ταμεία, φορολογικά, αναπηρία και συντάξεις.
Ο οδηγός ξεκινάει από το γιατί είναι δύσκολη η υπόθεση και καταλήγει στα έγγραφα που βγαίνουν. Ο επισκέπτης φτάνει στο γραφείο ξέροντας τι ζητάει.

Πώς λειτουργεί
- Μία αλήθεια για το ποιες κατηγορίες έχουν οδηγό: μια κατηγορία αποκτά σελίδα μόνο όταν το αρχείο της έχει μη κενό σώμα. Ο ίδιος έλεγχος τροφοδοτεί τις διαδρομές του build, τους συνδέσμους της λίστας και τον κατάλογο του
llms.txt, οπότε τα τρία δεν μπορούν να διαφωνήσουν. Σήμερα τέσσερις από τις δώδεκα έχουν σώμα, και οι άλλες οκτώ εμφανίζονται χωρίς σύνδεσμο. - Ελληνικά slugs και στις δύο γλώσσες: η αγγλική σελίδα ζει κάτω από
/en/αλλά κρατάει τη διαδρομή της ελληνικής, ώστε ένας κοινός σύνδεσμος να δουλεύει και για τους δύο. - Ένας μόνο helper χτίζει κάθε href με prefix γλώσσας, και ένα test δομικής αντιστοιχίας ρίχνει το build αν τα δύο λεξικά αποκλίνουν σε κλειδιά, τύπους ή μήκη πινάκων.
Ένα μήνυμα αντί για τηλεφωνική ουρά
Ο επισκέπτης δεν χρειάζεται να τηλεφωνήσει για να ρωτήσει αν αναλαμβάνεται η υπόθεσή του: διαλέγει κατηγορία, γράφει το ερώτημά του και το στέλνει.
Το ωράριο φαίνεται όπως είναι στην πραγματικότητα, με το απόγευμα χωριστά από το πρωί, ώστε να μη βρεθεί κανείς μπροστά σε κλειστή πόρτα.

Πώς λειτουργεί
- Η φόρμα περνάει από τη δική μου self-hosted υπηρεσία φορμών, με το δημόσιο site key στο markup και κανένα μυστικό στο repo, και με Cloudflare Turnstile που επαληθεύεται στην πλευρά του server.
- Συναίνεση: ρητό κουτάκι για την καταχώριση των στοιχείων, με σύνδεσμο στην πολιτική απορρήτου, και GA4 που φορτώνει μόνο πίσω από τον διακόπτη analytics του cookie consent.
- JSON-LD ProfessionalService: αναγνωριστικό ΓΕΜΗ, ΑΦΜ, τοπικοποιημένο
areaServedγια πόλη και χώρα, χωριστά πρωινά και απογευματινά ωράρια, καιdisambiguatingDescriptionπου δηλώνει ότι η επιχείρηση δεν είναι δημόσια υπηρεσία.
Δεν χαλάει σιωπηλά
Ένα site που μπορεί να ξεμείνει πίσω χωρίς να το πει κανείς είναι χειρότερο από ένα site που σπάει. Ό,τι έχει δύο αντίγραφα εδώ είναι παράγωγο του ενός, και ό,τι μπορεί να αποκλίνει το πιάνει gate πριν την παραγωγή.
Πώς λειτουργεί
- Καθρέφτης για μηχανές: 22 committed
index.mdδίδυμα και έναllms-full.txt, με<link rel="alternate" type="text/markdown">σε κάθε route, ώστε ένας AI assistant να διαβάζει markdown και όχι HTML. - Build-time endpoints:
llms.txtκαιrobots.txtπαράγονται από τοsite.config.ts, τα λεξικά i18n και το collection, μέσω κανονικών imports ώστε ο builder να μένει ανεξάρτητος από το περιβάλλον. - Placeholder gate: σαρώνει 7 αρχεία για scaffold strings που ξέφυγαν από τη ρύθμιση, με παράκαμψη σχολίων και sentinels για τις σκόπιμα κενές τιμές.
- Σειρά του CI: types, unit tests, placeholder gate, build, crawl του built output για νεκρούς συνδέσμους, και μετά τα e2e.
- Επτά σουίτες Playwright: smoke, i18n, φόρμα, responsive, σάρωση axe σε κάθε σελίδα, και το panel προτιμήσεων εμφάνισης με τη μήτρα καταστάσεών του, συν ένα script αντιθέσεων χρώματος στις rendered σελίδες.
- Δύο hosts, ένα build shape: παραγωγή σε Cloudflare Workers Static Assets μέσω wrangler, staging σε Docker στο Coolify, με
SITE_URLκαιSTAGING_NOINDEXως build args ώστε το staging να μη διεκδικεί τα canonicals της παραγωγής.
Σύνδεσμοι
- Live: esupport-ioannina.gr
Παρόμοια έργα
- Rorsa Tools: το MCP toolkit πίσω από το markdown mirror αυτού του site
- Κόμβος Υγείας & Dr Christos Kolettis: άλλα Astro sites της ίδιας οικογένειας, χωρίς το AEO layer