// full-stack web developer
Γιάννης Καπέρδας.
Σχεδιάζω και αναπτύσσω ψηφιακά προϊόντα υψηλών επιδόσεων, web εφαρμογές και εταιρικές ιστοσελίδες με Next.js, React και TypeScript, από τη στρατηγική και τα wireframes έως την παραγωγική λειτουργία.
εργαλεία & λογισμικό
σχεδιασμός · ανάπτυξη · παράδοση
01Επιλεγμένα έργα: Τα πιο πρόσφατα έργα μου
Μερικά πρόσφατα έργα: το πρόβλημα, η υλοποίηση και το αποτέλεσμα.
Επαναλαμβανόμενες ομαδικές παραγγελίες · 2026
CafeScoop
αποτέλεσμα
Ένα άμεσο κανάλι που βοηθά τις καφετέριες γειτονιάς να μετατρέπουν τα κοντινά γραφεία σε τακτικούς πελάτες, ενώ κάθε γραφείο παραγγέλνει γρήγορα από έναν σύνδεσμο και η καφετέρια λαμβάνει ένα καθαρό δελτίο αντί για χάος μηνυμάτων.
1 σύνδεσμος → 1 δελτίο καφετέριας
λεπτομέρειες έργου
- πρόβλημα
- Οι καφετέριες γειτονιάς χάνουν επαναλαμβανόμενες παραγγελίες γραφείων μέσα σε διάσπαρτα τηλεφωνήματα και μηνύματα WhatsApp: οι ίδιες λεπτομέρειες συλλέγονται καθημερινά, οι προθεσμίες δεν είναι σαφείς και το προσωπικό πρέπει να συνδυάζει χειροκίνητα τις επιλογές όλων.
- υλοποίηση
- Μια δίγλωσση πλατφόρμα επαναλαμβανόμενων παραγγελιών με Next.js 15, TypeScript και Supabase. Ένας διοργανωτής δημιουργεί την ομάδα και το πρόγραμμα, οι συνάδελφοι συμμετέχουν από σύνδεσμο χωρίς υποχρεωτική εγγραφή, η ζωντανή παραγγελία κλειδώνει αυτόματα και η καφετέρια λαμβάνει ένα συγκεντρωτικό δελτίο. Η ροή ολοκληρώνεται με kitchen board, ειδοποιήσεις email, αναφορά εσόδων και Sentry.
- Next.js 15
- TypeScript
- Supabase
- Realtime
- EL / EN
Μη κερδοσκοπικό ψηφιακό αρχείο · 2026
Greece Digital Monument
αποτέλεσμα
Μία ψηφιακή, μουσειακής ποιότητας βάση για 12 τεκμηριωμένα χαμένα ξενοδοχεία, με κάθε ισχυρισμό συνδεδεμένο με αξιόπιστες πηγές και πλήρη απόδοση για κάθε εικόνα.
12 τεκμηριωμένα ξενοδοχεία
λεπτομέρειες έργου
- πρόβλημα
- Τα μεγάλα ξενοδοχεία της Ελλάδας του 20ού αιώνα κατεδαφίζονται ή εγκαταλείπονται. Οι ιστορίες τους είναι διάσπαρτες σε αναξιόπιστες πηγές, χωρίς έναν χαρτογραφικό τρόπο για να τις εξερευνήσει το κοινό.
- υλοποίηση
- Ένα ανεξάρτητο, δίγλωσσο αρχείο με επιβεβαιωμένες πηγές, σε React 19, TypeScript και Vite. Περιλαμβάνει διαδραστικό χάρτη Leaflet, αρχιτεκτονικό ύφος, περιοχή, χρονογραμμή και έναν AI ιστορικό αρχειονόμο βασισμένο στις παραπομπές.
- React 19
- TypeScript
- Leaflet
- Groq AI
- EL / EN
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
Επεξηγήσιμη 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.
// 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 ώρες.



