---
title: Ιδιωτικό ΚΕΠ e-support Ιωαννίνων
description: >-
  Δίγλωσσο website για ιδιωτικό ΚΕΠ στα Ιωάννινα: 12 κατηγορίες υπηρεσιών, JSON-LD με ΓΕΜΗ/ΑΦΜ identifiers, AEO layer με
  build-time llms.txt και markdown mirror, και CI gates σε κάθε βήμα. Από τα design comps ως το Cloudflare production.
lang: el
source: https://jimrarras.com/projects/esupport-ioannina/
fetched: '2026-09-19T05:53:18.293Z'
---

Lead Developer

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

- **12** κατηγορίες υπηρεσιών σε μία σελίδα

- **4** αναλυτικοί οδηγοί βήμα προς βήμα

- **2** γλώσσες, με κάθε σελίδα καθρεφτισμένη

## Stack
1. [Αρχική](https://jimrarras.com/)
2. [Έργα](https://jimrarras.com/projects/)
3. Ιδιωτικό ΚΕΠ e-support Ιωαννίνων

κατηγορίες υπηρεσιών σε μία σελίδα

12

αναλυτικοί οδηγοί βήμα προς βήμα

4

γλώσσες, με κάθε σελίδα καθρεφτισμένη

2

![Ιδιωτικό ΚΕΠ e-support Ιωαννίνων](https://jimrarras.com/images/projects/esupport-ioannina/hero.webp)

## Η κατάσταση

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

## Ο επισκέπτης βλέπει αμέσως αν αφορά την υπόθεσή του

![Η σελίδα υπηρεσιών του e-support: σκούρο πράσινο header με το μενού, ο τίτλος για τις υπηρεσίες του γραφείου, και μια φωτογραφία γραφείου εξυπηρέτησης με φακέλους στον πάγκο](https://jimrarras.com/images/projects/esupport-ioannina/services.webp)

Η σελίδα υπηρεσιών: οι δώδεκα κατηγορίες ξεκινούν κάτω από τη φωτογραφία

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

Πώς λειτουργεί

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

## Οδηγός για τις υποθέσεις που μπερδεύουν

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

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

![Σελίδα οδηγού για τα ασφαλιστικά ταμεία: σύνδεσμος επιστροφής στις υπηρεσίες, δύο εισαγωγικές παράγραφοι και λίστα με ό,τι αναλαμβάνει το γραφείο, με έντονα τα ονόματα των εγγράφων](https://jimrarras.com/images/projects/esupport-ioannina/service-detail.webp)

Ο οδηγός για τα ασφαλιστικά ταμεία: πρώτα το πρόβλημα, μετά η λίστα των εγγράφων

Πώς λειτουργεί

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

## Ένα μήνυμα αντί για τηλεφωνική ουρά

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

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

![Η σελίδα επικοινωνίας: κάρτα με τα στοιχεία του γραφείου και αναλυτικό ωράριο ανά μέρα, δίπλα σε φόρμα με ονοματεπώνυμο, τηλέφωνο, email, κατηγορία υπηρεσίας, μήνυμα και κουτάκι συναίνεσης](https://jimrarras.com/images/projects/esupport-ioannina/contact.webp)

Η σελίδα επικοινωνίας: τα στοιχεία του γραφείου δίπλα στη φόρμα

Πώς λειτουργεί

- **Η φόρμα περνάει από τη δική μου 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 της παραγωγής.

## Σύνδεσμοι

Το `llms.txt` δεν είναι αρχείο που γράφτηκε κάποτε με το χέρι: παράγεται σε κάθε build από τα ίδια δεδομένα με τις σελίδες, οπότε ένα χαλασμένο input ρίχνει το build αντί να σερβίρει λάθος κατάλογο.

- Live: [esupport-ioannina.gr](https://esupport-ioannina.gr/)

## Παρόμοια έργα

- Rorsa Tools: το MCP toolkit πίσω από το markdown mirror αυτού του site
- Κόμβος Υγείας & Dr Christos Kolettis: άλλα Astro sites της ίδιας οικογένειας, χωρίς το AEO layer
