// full-stack web developer

Γιάννης Καπέρδας.

Σχεδιάζω και αναπτύσσω ψηφιακά προϊόντα υψηλών επιδόσεων, web εφαρμογές και εταιρικές ιστοσελίδες με Next.js, React και TypeScript, από τη στρατηγική και τα wireframes έως την παραγωγική λειτουργία.

εργαλεία & λογισμικό

σχεδιασμός · ανάπτυξη · παράδοση

  • React
  • TypeScript
  • Next.js
  • Node.js
  • Tailwind CSS
  • PostgreSQL
  • Supabase
  • GraphQL
  • Figma
  • Framer
  • Adobe Photoshop
  • Adobe InDesign
  • Git
  • GitHub
  • Vercel

01Επιλεγμένα έργα: Τα πιο πρόσφατα έργα μου

Μερικά πρόσφατα έργα: το πρόβλημα, η υλοποίηση και το αποτέλεσμα.

CafeScoop στιγμιότυπο
001

Επαναλαμβανόμενες ομαδικές παραγγελίες · 2026

CafeScoop

αποτέλεσμα

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

1 σύνδεσμος → 1 δελτίο καφετέριας

λεπτομέρειες έργου
πρόβλημα
Οι καφετέριες γειτονιάς χάνουν επαναλαμβανόμενες παραγγελίες γραφείων μέσα σε διάσπαρτα τηλεφωνήματα και μηνύματα WhatsApp: οι ίδιες λεπτομέρειες συλλέγονται καθημερινά, οι προθεσμίες δεν είναι σαφείς και το προσωπικό πρέπει να συνδυάζει χειροκίνητα τις επιλογές όλων.
υλοποίηση
Μια δίγλωσση πλατφόρμα επαναλαμβανόμενων παραγγελιών με Next.js 15, TypeScript και Supabase. Ένας διοργανωτής δημιουργεί την ομάδα και το πρόγραμμα, οι συνάδελφοι συμμετέχουν από σύνδεσμο χωρίς υποχρεωτική εγγραφή, η ζωντανή παραγγελία κλειδώνει αυτόματα και η καφετέρια λαμβάνει ένα συγκεντρωτικό δελτίο. Η ροή ολοκληρώνεται με kitchen board, ειδοποιήσεις email, αναφορά εσόδων και Sentry.
  • Next.js 15
  • TypeScript
  • Supabase
  • Realtime
  • EL / EN
Greece Digital Monument στιγμιότυπο
002

Μη κερδοσκοπικό ψηφιακό αρχείο · 2026

Greece Digital Monument

αποτέλεσμα

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

12 τεκμηριωμένα ξενοδοχεία

λεπτομέρειες έργου
πρόβλημα
Τα μεγάλα ξενοδοχεία της Ελλάδας του 20ού αιώνα κατεδαφίζονται ή εγκαταλείπονται. Οι ιστορίες τους είναι διάσπαρτες σε αναξιόπιστες πηγές, χωρίς έναν χαρτογραφικό τρόπο για να τις εξερευνήσει το κοινό.
υλοποίηση
Ένα ανεξάρτητο, δίγλωσσο αρχείο με επιβεβαιωμένες πηγές, σε React 19, TypeScript και Vite. Περιλαμβάνει διαδραστικό χάρτη Leaflet, αρχιτεκτονικό ύφος, περιοχή, χρονογραμμή και έναν AI ιστορικό αρχειονόμο βασισμένο στις παραπομπές.
  • React 19
  • TypeScript
  • Leaflet
  • Groq AI
  • EL / EN
Infinite Impressions × Cookies στιγμιότυπο
003

AI κονσόλα συμμόρφωσης · 2026

Infinite Impressions × Cookies

αποτέλεσμα

Μια αυστηρή, editorial κονσόλα WCAG-AA με πραγματικά δεδομένα Recharts και JavaScript bundle που μειώθηκε από περίπου 1057 kB σε περίπου 216 kB.

1057 → 216 kB

λεπτομέρειες έργου
πρόβλημα
Τα cookie banners βρίσκονται ανάμεσα στη νομοθεσία ιδιωτικότητας και την πίεση για opt-ins. Το web είναι γεμάτο dark patterns, trackers πριν από συγκατάθεση και μη προσβάσιμα banners, ενώ οι ομάδες συχνά δεν γνωρίζουν αν το δικό τους είναι σύννομο.
υλοποίηση
Μια AI κονσόλα που μετατρέπει την αβεβαιότητα σε δράση με πέντε εργαλεία: audit URL με διορθώσεις κώδικα, ανασχεδιασμό banner με live preview και εξαγωγή React/HTML, timeline φόρτωσης scripts, analytics συναίνεσης και privacy consultant. React 19, Vite και Tailwind v4.
  • React 19
  • Vite
  • Tailwind v4
  • Recharts
  • AI
MailSentinel στιγμιότυπο
004

Επεξηγήσιμη ML για spam · 2026

MailSentinel

αποτέλεσμα

Ένα demo χωρίς login και με προστασία ιδιωτικότητας, με ανοιχτή model card και προσαρμογή σε σύγχρονα email domains ώστε η αξιολόγηση να είναι χρήσιμη σήμερα.

97,7% accuracy

λεπτομέρειες έργου
πρόβλημα
Τα εργαλεία spam και phishing συχνά είναι μαύρα κουτιά: οι περισσότεροι ανιχνευτές βασίζονται σε πρόχειρους κανόνες, τα demos απαιτούν Gmail login πριν δείξουν κάτι και τα δημόσια datasets είναι παλιά.
υλοποίηση
Ένας πραγματικός ταξινομητής με TF-IDF και logistic regression, 97,7% accuracy και 0,997 ROC-AUC, σχεδιασμένος ως γυάλινο κουτί: το βάρος κάθε λέξης οδηγεί σε χρωματική επισήμανση και panel εξήγησης. Η ανάλυση γίνεται στον browser, χωρίς το email να φεύγει από τη συσκευή.
  • Next.js 16
  • TypeScript
  • scikit-learn
  • Explainable ML

02Κώδικας: Πρόσφατες πρωτοβουλίες κώδικα

Μοτίβα που χρησιμοποιώ σε πραγματικά έργα. Κάθε ένα λύνει ένα γνώριμο πρόβλημα. Διάλεξε ένα για να το διαβάσεις.

Modal.tsx

Modal dialogs that trap focus and restore it, without pulling in a UI library.

Προβολή στο GitHub
// Problem: accessible modal dialogs that trap focus and restore it on close,
// without pulling in a whole UI library.
import { useEffect, useRef } from "react";

export function Modal({ open, onClose, title, children }: {
  open: boolean;
  onClose: () => void;
  title: string;
  children: React.ReactNode;
}) {
  const ref = useRef<HTMLDivElement>(null);

  useEffect(() => {
    if (!open) return;
    const previouslyFocused = document.activeElement as HTMLElement | null;
    const focusables = ref.current!.querySelectorAll<HTMLElement>(
      'a[href], button:not([disabled]), input, [tabindex]:not([tabindex="-1"])',
    );
    focusables[0]?.focus();

    function onKeyDown(e: KeyboardEvent) {
      if (e.key === "Escape") return onClose();
      if (e.key !== "Tab" || focusables.length === 0) return;
      const first = focusables[0];
      const last = focusables[focusables.length - 1];
      // Wrap focus so Tab never escapes the dialog.
      if (e.shiftKey && document.activeElement === first) {
        e.preventDefault();
        last.focus();
      } else if (!e.shiftKey && document.activeElement === last) {
        e.preventDefault();
        first.focus();
      }
    }

    document.addEventListener("keydown", onKeyDown);
    return () => {
      document.removeEventListener("keydown", onKeyDown);
      previouslyFocused?.focus(); // restore focus to the trigger element
    };
  }, [open, onClose]);

  if (!open) return null;
  return (
    <div className="overlay" onClick={onClose}>
      <div
        ref={ref}
        role="dialog"
        aria-modal="true"
        aria-label={title}
        onClick={(e) => e.stopPropagation()}
      >
        {children}
      </div>
    </div>
  );
}

03Σχετικά: Ολοκληρωμένη υλοποίηση

Είμαι ο Γιάννης Καπέρδας, full-stack web developer με πρακτική εμπειρία στην υλοποίηση ιστοσελίδων και web εφαρμογών μέσα από ένα ευρύ φάσμα έργων. Διαθέτω MSc in Business Information Technology Systems από το University of Strathclyde και MSc in IT and Applications από το Πανεπιστήμιο Δυτικής Αττικής.

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

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

τι κάνω

  • Web εφαρμογές και dashboards
  • /Ιστοσελίδες marketing και landing pages
  • /Επιδόσεις και SEO
  • /Από design σε κώδικα
βάση
Αθήνα, Ελλάδα · Εξ αποστάσεως
τεχνολογίες
TypeScript · React · Next.js
συνεργασίες
Startups, agencies και ιδρυτές

// εργαλειοθήκη

  • TypeScript
  • React
  • Next.js
  • Node.js
  • Tailwind CSS
  • PostgreSQL
  • REST & GraphQL
  • Figma → Code
  • Web Vitals
  • Vercel / CI

04Επικοινωνία: Ας συνεργαστούμε

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

Γίνεται επαλήθευση του μηνύματος...