Dashboard
👑 MONARCH ΔΙΑΧΕΙΡΙΣΗ ΣΥΣΤΗΜΑΤΟΣ
🏆 TOP GUILDS
⚡ ΔΡΑΣΤΗΡΙΟΤΗΤΑ
👑 MONARCH

🏛️ Επιχειρήσεις

Guild registry — κάθε νέα εταιρεία αποκτά αυτόματα owner

🔍

Πελάτες

Απλοί χρήστες — δεν είναι staff ή owner κάπου

Λίστα Χρηστών
ΧρήστηςEmailΤηλέφωνοΕταιρείεςΤελ. σύνδεσηΚατάσταση / Ενέργειες

Admins

Διαχειριστές της πλατφόρμας

Λίστα Admins
ΧρήστηςEmailΤελ. σύνδεσηΚατάστασηΕνέργειες

Τύποι Επιχειρήσεων & Κατηγορίες Υπηρεσιών

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

Τύποι (0)

CMS / Περιεχόμενο

Κείμενα και εικόνες δημόσιας σελίδας

🏠 Hero Section
⚙️ Γενικά
🎨 Εμφάνιση
📞 Επικοινωνία & Footer

Ρυθμίσεις

Λογαριασμός, ειδοποιήσεις & τιμολόγηση

🔐 Στοιχεία Admin

📋 Πλάνο & Roadmap

Τι είναι το BookingApp και πού πάμε — ζωντανό σχέδιο (συγχρονισμένο με το README.md)

Vision: Multi-tenant πλατφόρμα online ραντεβού για ελληνικές επιχειρήσεις υπηρεσιών (gym/trainers, yoga, κομμωτήρια, beauty, physio). Στυλ Booksy/Fresha «στα ελληνικά». Διαφοροποίηση: API-first + gamification τελικού πελάτη.
✅ Κατάσταση 2026-06-14: Φάση Α ✅ · F2 τύποι/κατηγορίες ✅ · μοντέλο κρατήσεων (παλιό 4 τύπων → v3) ✅ · #1 ωράριο+slots ✅ · #2 ειδοποιήσεις (in-app/email/SMS/reminders) ✅ · #3 reviews+stats ✅ · #4 register UI ✅ · 👁 impersonation («Προβολή ως») ✅ · 🗂️ admin UI: «Αλλαγές Συστήματος» menu+tabs ✅ · 🎨 mylvlup design LIVE ✅ · 📄 Τιμολόγηση/myDATA (έρευνα+settings UI admin/company) ✅ · 🗂️ settings σε tabs (admin/company/user) ✅. Εξαρτήσεις χρήστη: SMTP creds, SMS gateway URL, cPanel cron (Ρυθμίσεις).
🎮 Μοντέλο v3 + Solo Leveling (2026-06-14): services ΕΠΑΝΗΛΘΑΝ — πρώτα ΥΠΗΡΕΣΙΑ (κατηγορία+mode+ωράριο), μετά ΕΓΓΡΑΦΕΣ ανά υπηρεσία (μέσα στο προφίλ της) + λίστα μελών + manual enroll. ΟΛΟ το business panel σε Solo Leveling (Dashboard status window, Υπηρεσίες gates, Ημερολόγιο session-roster, Ραντεβού quest log, Πελατολόγιο guild roster, Hunter Profile). Admin: Monarch Dashboard + Επιχειρήσεις Guild Registry. Νέα endpoints: members/usersearch/day/customer/overview. ΜΕΝΕΙ: admin πελάτες/τύποι/ρυθμίσεις SL· gamification growth rules· σβήσιμο test data.
🚚 Μεταφορά + Workflows (2026-06-15): μεταφέρθηκε σε https://mylvlup.gr (νέο cPanel, DB mylvlup_db4731, W:\ = docroot, backup μέσω dev action=dump)· όλα τα Workflows διαγράμματα → v3. Go-live που μένει: Google OAuth origin, cron URL, κλείσιμο dev endpoint, gym→301.
🌍 Οι 3 κόσμοι χρήστη
  • Πελάτης — βρίσκει επιχειρήσεις, κλείνει ραντεβού, συνδρομές
  • Επιχείρηση (owner/manager/staff) — ραντεβολόγιο, πελάτες, υπηρεσίες
  • Admin — επιχειρήσεις, χρήστες, πλάνα, CMS
🧱 Stack
  • cPanel + LiteSpeed · PHP 7.4 · MySQL 5.7+
  • Static SPA + REST API (χωρίς framework)
  • Custom JWT auth + Google Sign-In
  • Multi-tenant με company_id isolation
🗺️ Roadmap — Φάσεις

🔴 Φάση Α Σταθεροποίηση — ✅ ρόλοι DB↔κώδικα · ✅ parse error · ✅ καθάρισμα debug αρχείων · ✅ end-to-end smoke test (A4) · ✅ A5 dev DB endpoint (έτοιμο) · ✅ A6 fix login persistence (auto-refresh token)


🟠 Φάση Β Ασφάλεια ✅ — ✅ strong JWT secret · ✅ ενιαίο CORS · ✅ security headers (HSTS/Referrer/Permissions) · ✅ rate-limit auth (429) · ✅ Google verify fail-closed


🟡 Φάση Γ Core — ✅ ωράρια/slots (#1) · ✅ email SMTP + SMS + reminders (#2) · ✅ υπηρεσίες v3 + εγγραφές/πακέτα (ανά υπηρεσία) + purchase · ✅ reviews/stats (#3) · ⬜ πλήρες ραντεβολόγιο


🟢 Φάση Δ Features — 🔄 ραντεβολόγιο (Ημέρα/Εβδ/Μήνας ✅· drag/staff εκκρεμεί) · 🔄 πληρωμές (per-business settings ✅· checkout εκκρεμεί) · ✅ ειδοποιήσεις · ✅ reviews/stats · 🔄 τιμολόγηση/myDATA (settings ✅· έκδοση εκκρεμεί) · ⬜ multi-staff · ⬜ reports · ✅ μοντέλο v3 (service-based) · ✅ Solo Leveling UI (business+admin) · ✅ μεταφορά mylvlup.gr · ⬜ gamification growth rules


🔵 Φάση Ε Ποιότητα — ⬜ testing · ⬜ deploy + backups · ⬜ τεκμηρίωση API

📋 Feature backlog

F1. CRM / πελατολόγιο — ✅ Πελατολόγιο (guild roster) + 🧙 Hunter Profile (καρτέλα/ιστορικό πελάτη) + badge ● ΕΝΕΡΓΗ/○ ΑΝΕΝΕΡΓΗ· μένει σημειώσεις/tags (προαιρετικά)

F2. Τύποι επιχειρήσεων & κατηγορίες υπηρεσιών — DB layer ✅ (business_types 6 + service_categories 25, companies.business_type_id, services.service_category_id). ✅ admin «Τύποι & Κατηγορίες» CRUD + business επιλογή κατηγορίας στην υπηρεσία — ΟΛΟΚΛΗΡΩΘΗΚΕ

F3. Δικές του υπηρεσίες ανά επιχείρηση — λειτουργεί

🔄 F4. Ραντεβολόγιο — ✅ προβολές Ημέρα/Εβδομάδα/Μήνας + session-roster (ποιοι μέσα) → Hunter Profile· μένει drag-reschedule + ανά staff (μελλοντική φάση)

F5. Πρόγραμμα/ωράριο υπηρεσιών — ✅ service_hours ανά υπηρεσία (weekday/από–έως) + θέσεις/session (capacity)

F6. Public API (να δέχεται API calls) — API keys + webhooks · differentiator

🔄 F7. Gamification τελικού πελάτη — ✅ Solo Leveling UI live (LV/RANK/EXP/quests/leaderboard/achievements σε business+admin)· ⬜ growth rules: πώς μεγαλώνουν stats/EXP/streaks/rewards — επόμενο

F8. Rebrand «mylvlup» — ✅ Solo Leveling UI εφαρμόστηκε σε ΟΛΟ το app (live) + ✅ μεταφορά σε domain https://mylvlup.gr

🔍 Έρευνα αγοράς & στρατηγική (2026-06-13)

Ανταγωνιστές: Fresha & Booksy (υβριδικό: συνδρομή + προμήθεια σε νέους πελάτες marketplace) · SimplyBook.me/Vagaro/GlossGenius/Mangomint (καθαρή συνδρομή).

Ελλάδα: Spotable (fitness/wellness — ο βασικός ανταγωνιστής) & VYNE (beauty, μοντέλο Fresha). Το υβριδικό μοντέλο ήρθε ήδη στην Ελλάδα.

Standard (table-stakes): online booking 24/7, ραντεβολόγιο, CRM, πληρωμές, SMS/email reminders, συνδρομές, analytics.

Διαφοροποίηση: API-first (μόνο SimplyBook το έχει σοβαρά) + gamification (κανείς ως standard) → εκεί ποντάρουμε.


⚠️ Spikes πριν την υλοποίηση: S1. myDATA/ΑΑΔΕ & ΑΦΜ (νομικά — με λογιστή) · S2. gamification best practices · S3. πληρωμές Ελλάδας (Viva/Stripe).

📝 Changelog

Τι έχει γίνει μέχρι τώρα — ιστορικό αλλαγών

📌 v0.x — Σε ανάπτυξη
2026-06-15🔧 Workflows διαγράμματα → v3
  • ✅ Ξαναζωγραφίστηκαν όλα τα διαγράμματα ροής (tab Workflows) στο μοντέλο v3 + Solo Leveling — δεν αντιστοιχούσαν πια στις λειτουργίες
  • 1️⃣ Admin Panel: 👑 MONARCH Dashboard + 7 προορισμοί (Επιχειρήσεις/Πελάτες/Admins/Τύποι & Κατηγορίες/CMS/Ρυθμίσεις/Αλλαγές Συστήματος) + Προβολή ως
  • 2️⃣ Setup Owner: υπηρεσία (κατηγορία+mode+ωράριο+θέσεις) → 🎟️ εγγραφές/πακέτα ΑΝΑ υπηρεσία + 👥 μέλη/manual enroll
  • 5️⃣ Διαχείριση: Ημερολόγιο session-roster + popup · Ραντεβού quest log · Πελατολόγιο active/inactive → 🧙 Hunter Profile
  • 4️⃣ Κράτηση: open=ελεύθερη είσοδος vs session=membership+ωράριο-window+θέσεις<capacity+frequency · η κάρτα «4 τύπων» σημάνθηκε ως προηγούμενο μοντέλο
2026-06-15🚚 Μεταφορά σε mylvlup.gr
  • ✅ Το project μεταφέρθηκε gym.vasis.online → https://mylvlup.gr (ίδιος WHM, νέο cPanel account)· νέα DB mylvlup_db4731· W:\ = mylvlup docroot
  • ✅ Άλλαξαν μόνο config/app.php (APP_URL → mylvlup, διορθώνει & CORS) + config/database.php (creds)· JWT_SECRET ίδιο· smoke test ΟΚ (site/admin/business/dashboard/API/DB)
  • ✅ Νέο dev tool action=dump → one-click πλήρες .sql backup (schema+data, FK-safe)· πλάνο μεταφοράς στο MIGRATION_mylvlup.md
  • ⬜ Μένει go-live: Google OAuth origin (mylvlup.gr)· cron URL· κλείσιμο dev endpoint· σβήσιμο test data + junk· gym→301 redirect
2026-06-14🎮 Μοντέλο v3 + Solo Leveling UI
  • ✅ ΜΟΝΤΕΛΟ v3 (ΤΟ ΣΩΣΤΟ): services ΕΠΑΝΗΛΘΑΝ (κατηγορία+mode+ωράριο)· εγγραφές = πακέτα ΑΝΑ υπηρεσία (service_id)· migration 2026-06-14_enrollment_v3_service_based.sql
  • ✅ MERGE: μενού «Εγγραφές» καταργήθηκε → κλικ υπηρεσία → προφίλ με πακέτα (level bars από member_count) + λίστα εγγεγραμμένων + «Εγγραφή πελάτη» (αναζήτηση email)· ο πελάτης μπαίνει αυτόματα στο πελατολόγιο
  • ✅ SOLO LEVELING όλο το business panel: Dashboard (status LV/RANK/EXP+quests), Υπηρεσίες (gates+RANK), Ημερολόγιο (session-slot roster με avatars), Ραντεβού (quest log chips), Πελατολόγιο (guild roster), Hunter Profile πελάτη (κλικ από slots/πελατολόγιο/ραντεβού), Προφίλ (system panels)
  • ✅ ADMIN Solo Leveling: Dashboard «Monarch» (system status + TOP GUILDS leaderboard + activity) + Επιχειρήσεις «Guild Registry» (rank cards)· νέο endpoint /admin/overview
  • ✅ Νέα backend resources: members (roster/enroll/cancel), usersearch, day (slots+rosters), customer (hunter profile)· +member_count σε services/plans/companies
  • ✅ Ημερολόγιο: session-slot roster popup (Solo Leveling «System notification»)· κλικ slot→ποιοι είναι μέσα→κλικ→Hunter Profile· scrollbar στο day panel
  • ✅ Πελατολόγιο: ο πελάτης ΜΕΝΕΙ μετά λήξη/ακύρωση/διαγραφή συνδρομής· badge ● ΕΝΕΡΓΗ / ○ ΑΝΕΝΕΡΓΗ (active_subs)
  • 🐛 Fix: clients query only_full_group_by (GROUP BY +cu.company_id)· popup styling authentic SL frame
  • 🐛 Διορθώσεις: appointments join rollback (enrollment_plan_id→service_id), serviceModeFields/saveServiceHours rollback, plans company_id fallback, διπλό const WD_NAMES· διαγνωστικό api/error_log
2026-06-14🎟️ Μοντέλο Εγγραφών v2 — services καταργήθηκαν
  • ✅ Ο πίνακας services ΔΙΑΓΡΑΦΗΚΕ εντελώς — κάθε εγγραφή (plan) είναι πλέον το κεντρικό πωλούμενο (απόφαση owner)
  • ✅ enrollment_plans += mode (open/session) + session_duration + session_capacity · νέος πίνακας enrollment_plan_hours (εβδομαδιαίο ωράριο μέρες+ώρες) · appointments → enrollment_plan_id
  • ✅ Business: plan modal με τρόπο πρόσβασης + διάρκεια/θέσεις session + ωράριο editor· όλο το «Υπηρεσίες» UI αφαιρέθηκε
  • ✅ Customer: «Κάνε εγγραφή» → membership· open = ελεύθερη είσοδος, session = κράτηση slot με έλεγχο ωραρίου + θέσεων + frequency
  • ✅ Public flow τεσταρισμένο live (company profile → plans, slots ?plan_id=&date=)
2026-06-14Write-access fix & mylvlup design mockups
  • Λύθηκε η εγγραφή στο W:\ (rclone mount αντί sshfs-win + chown/Normal Shell) — δημιουργία αρχείων πλέον αξιόπιστη
  • AGENDA → DB-backed (πίνακες meetings + meeting_topics, MeetingController) με TinyMCE rich-text σημειώσεις
  • Rebrand «mylvlup» — Solo Leveling fitness-leveling UI: mockups landing/dashboard/booking/profile (ξεχωριστά αρχεία, ΟΧΙ live)
  • Main banner με anime artwork (uploads/mainBanner.png), κοινό mvl.css, responsive fixes, nav «↗ Live app», ονομασίες GUILD/Overall Capacity
  • Φάση Α: A1 ρόλοι (η DB ήταν ήδη ΟΚ + ευθυγράμμιση schema.sql) · A5 dev DB endpoint (/api/devtool) · A6 login persistence (refresh-token flow)
  • Φάση Α: ✅ A1 (DB είχε ήδη ρόλους) · ✅ A2 (error_log καθαρό) · ✅ A3 (debug αρχεία→410) · ✅ A5 (/api/devtool) · ✅ A6 (refresh-token flow)
  • ✅ A4 end-to-end smoke test ΟΛΟΚΛΗΡΩΘΗΚΕ (live): register→login→admin εταιρεία+owner→service→πελάτης έκλεισε ραντεβού (appointment id 1, confirmed) → Φάση Α κλειστή
  • 🐛 Routing fix (.htaccess): /api/appointments ήταν ΚΑΙ module ΚΑΙ φάκελος → mod_dir 301 → -Indexes 403, ο router δεν καλούνταν (έσπαγε booking/λίστα ραντεβού). Fix: χωρισμός σε -f (αρχεία) + -d εκτός /api (φάκελοι)
  • Register backend δουλεύει (POST /api/auth/register → customer)· λείπει μόνο UI φόρμα (μπαίνει στο mylvlup redesign)
  • 🔄 F2 DB layer: πίνακες business_types (6 seed) + service_categories (25 seed) · companies.business_type_id · services.service_category_id (migration 2026-06-14)
  • 🔄 Μοντέλο κρατήσεων DB layer: services.booking_type (single/subscription/session/package) + params· subscriptions γενίκευση (kind/period/visits_per_week)
  • 🔄 Admin menu «Τύποι & Κατηγορίες»: CRUD τύπων/κατηγοριών (api/types/TypeController.php, routes types+categories)· schema.sql ευθυγραμμίστηκε
  • ✅ Business UI: company modal παίρνει «Τύπος επιχείρησης» (business_type_id)· φόρμα υπηρεσίας διαλέγει κατηγορία + booking_type (single/subscription/session/package) + dynamic params (χωρητικότητα/περίοδος/credits)· validation κατηγορίας↔τύπου
  • ✅ Booking enforcement (AppointmentController): single=slot conflict· session=capacity + no-overlap ίδιας κατηγορίας· package=απαιτεί credits→decrement (price 0)· subscription=απαιτεί ενεργή + εβδομαδιαίο όριο. Όλα τεσταρισμένα live — μοντέλο κρατήσεων ΠΛΗΡΕΣ
  • ✅ Purchase flow: POST /api/subscriptions (αγορά πακέτου/συνδρομής)· public profile επιστρέφει booking_type· dashboard προτείνει αγορά πριν την κράτηση. ⚠️ Χωρίς payment gateway ακόμα (Φάση Δ)
  • 📌 Πλάνο (Φάση Δ): per-business payment credentials — κάθε επιχείρηση βάζει στα settings της δικά της Viva/Stripe/PayPal & εισπράττει στον λογαριασμό της (πίνακας company_payment_providers, encrypted secrets, test/live, default). Spec στο README D2
  • ✅ #1 Ωράριο λειτουργίας + πραγματικά slots: πίνακας company_hours (εβδομαδιαίο ανά εταιρεία)· business Προφίλ→editor ωραρίου· slots endpoint /api/companies/{slug}/slots· dashboard booking χρησιμοποιεί πλέον πραγματικά διαθέσιμα slots (τέλος τα demo). Τεσταρισμένο live
  • ✅ #2a Ειδοποιήσεις (in-app): πίνακας notifications· Notifier dispatcher (in-app + email/SMS gated)· NotificationController (list/count/read)· trigger στην κράτηση· 🔔 bell στο dashboard με unread badge. Τεσταρισμένο. Μένει: email SMTP, SMS, business bell, reminders cron
  • ✅ #2b Email μέσω SMTP: Notifier::sendSmtp (socket client, AUTH LOGIN + STARTTLS/SSL)· admin Ρυθμίσεις→κάρτα Email (host/port/user/pass/from) + κουμπί Test email· στέλνει αυτόματα email επιβεβαίωσης σε κάθε κράτηση. Χρειάζεται ο owner να βάλει SMTP credentials στο admin. SMS card έτοιμη (μένει η υλοποίηση provider-specific)
  • #2 ΟΛΟΚΛΗΡΩΘΗΚΕ: 2c SMS (configurable HTTP gateway — URL template στο admin)· business bell + owner notification (new_booking)· reminders cron (/api/cron/reminders?key= — στήσε cPanel cron κάθε ώρα, reminder_hours=24). In-app/email/SMS/reminders όλα έτοιμα. Εξαρτήσεις χρήστη: SMTP creds, SMS gateway URL, cPanel cron
  • #3 Reviews + Στατιστικά: πίνακας reviews· ReviewController (POST πελάτης / GET public avg+list)· business/stats endpoint· business dashboard κάρτα «Αξιολόγηση ⭐»· public profile +rating· dashboard booking «Άσε κριτική». Όλα τα functional features (#1-#3) ΕΤΟΙΜΑ.
  • 🎨 GRAPHICS: Landing staged (mylvlup design εγκεκριμένο) — index-mylvlup.html live με πλήρη λειτουργικότητα (login/register modal, Google, δυναμικά businesses, CMS). Προς επαλήθευση → μετά swap σε index.html. Ακολουθούν dashboard/business/admin
  • 🎨 GRAPHICS LIVE: όλο το app στο mylvlup design. index.html swapped (backup index-old.html)· dashboard/business/admin retinted στην neon παλέτα (μπλε/cyan/μωβ). Register UI live (#4). Όλα 200.
  • 🎟️ Μοντέλο Εγγραφών (CANONICAL) — Βήμα 1+2a: νέοι πίνακες enrollment_plans + enrollment_plan_categories· services.access_type (oneoff/open/session, αντικατέστησε booking_type)· subscriptions→membership· αφαιρέθηκε κατηγορία «Συνδρομή». Backend Εγγραφές CRUD (/api/business/plans). Βήμα 2b: service form «Τρόπος πρόσβασης» (oneoff/open/session). Βήμα 3: business menu «🎟️ Εγγραφές» (CRUD πακέτων εβδομάδων/τιμή/συχνότητα/κατηγορίες). Business πλευρά πλήρης. Μένει: αγορά εγγραφής (customer) + enforcement rewrite.
  • 🗑️ Refinement — real delete υπηρεσιών & ραντεβού (business): υπηρεσίες: ξεχωριστά κουμπιά Απενεργ./Ενεργ. (toggle is_active) + 🗑️ οριστική διαγραφή (cascade). Ραντεβού: ✕ ακύρωση + 🗑️ οριστική διαγραφή. Backend DELETE → πραγματικό DELETE FROM (όχι soft).
  • 📅 Δ3 Ραντεβολόγιο (business): προβολές Ημέρα / Εβδομάδα / Μήνας με view switcher· time-grid 08-22 με appointment chips· click chip→edit, click κενό→νέο ραντεβού. Μένει: drag-reschedule + ανά staff.
  • 💳 Δ1 Payment settings (per-business): tab «Πληρωμές» σε admin (site_settings pay_*) & business Προφίλ (/api/business/payment → company_content)· generic credentials Viva/Stripe/PayPal (provider/mode/merchant/client/secret/webhook). Checkout/charging = επόμενη φάση.
  • 🗂️ Settings σε tabs (admin/company/user): οι ρυθμίσεις δεν είναι πια στοιβαγμένες — admin Ρυθμίσεις (Λογαριασμός/Email/SMS/Τιμολόγηση)· business Προφίλ (Στοιχεία/Ωράριο/Τιμολόγηση)· dashboard Προφίλ (Στοιχεία/Ασφάλεια).
  • 📄 Τιμολόγηση/myDATA: έρευνα S1 ✅ + settings UI. myDATA REST API καλύπτει 2.1 (B2B τιμολόγιο) & 11.2 (B2C απόδειξη). Admin Ρυθμίσεις «Τιμολόγηση/myDATA» (μόνο 2.1)· business Προφίλ «Τιμολόγηση» (2.1+11.2· /api/business/invoice). Πεδία/αποθήκευση έτοιμα· έκδοση/διαβίβαση + λογιστής = επόμενη φάση. (B2B ηλ. τιμολόγηση υποχρεωτική 2/2/2026)
  • 🔒 Φάση Β Ασφάλεια (B1-B5): strong JWT secret (64-hex, έφυγε placeholder)· ενιαίο CORS· security headers (HSTS/Referrer/Permissions)· rate-limit login/register/forgot (429)· Google verify fail-closed + email_verified. dev endpoint = αναμονή ολοκλήρωσης (ο χρήστης ορίζει).
  • 👁 Impersonation («Προβολή ως»): admin → Πελάτες/Επιχειρήσεις → κουμπί ανοίγει το dashboard/business panel του καθενός σε νέο tab (POST /api/admin/impersonate → προσωρινό token μέσω URL hash· η σύνδεση admin στο localStorage μένει ανέγγιχτη· banner «Προβολή ως»).
  • 🗂️ Admin UI αναδιοργάνωση: το «Αλλαγές Συστήματος» έγινε ΕΝΑ sidebar menu με tabs (Πλάνο/Changelog/Workflows/AGENDA/Design)· η Τεκμηρίωση ενώθηκε μέσα στα Workflows (κουμπί «Συνέχεια →»). Όλο το app στο νέο design.
  • Test data: Test Gym (company 1) · owner@test.gr (company_owner) · Personal Training service (1)
  • Σχεδίαση μετά Φάση Α: F2 τύποι επιχειρήσεων + κατηγορίες υπηρεσιών (1/εταιρεία) · μοντέλο κρατήσεων 4 τύποι (single/subscription/session/package)
  • ⚠️ TODO πριν production: αφαίρεση dev endpoint (api/dev, route devtool, DEV_DB_KEY)
2026-06-13Πλάνο & Έρευνα
  • Δημιουργία Master Plan & Roadmap (Φάσεις Α–Ε) στο README.md
  • Feature backlog F1–F7 (CRM, κατηγορίες, ραντεβολόγιο, ωράρια, public API, gamification)
  • Ανταγωνιστική έρευνα αγοράς (διεθνώς + Ελλάδα) με πηγές
  • Προσθήκη menu «Πλάνο / Roadmap» & «Changelog» στο admin
  • Menu Τεκμηρίωση, Workflows, AGENDA (DB-backed: πίνακες meetings + meeting_topics, MeetingController)
2026-04-19Admin panel & Google Auth
  • Admin panel: επιχειρήσεις, χρήστες, admins, CMS, ρυθμίσεις
  • Google Sign-In (GoogleAuthController)
  • Ρόλοι company_owner / company_user στο AuthMiddleware & controllers
2026-04-18Αρχική υλοποίηση (Φάση 1)
  • MySQL schema (11 πίνακες) + Database layer (PDO)
  • Auth: register/login/refresh/me/forgot-password (JWT)
  • Controllers: business, companies, appointments, settings, users
  • Frontend SPAs: public, admin, business, dashboard
ℹ️ Το changelog ενημερώνεται χειροκίνητα. Όταν κλείνει μια εργασία από το roadmap, προστίθεται εδώ.

📖 Τεκμηρίωση (συνέχεια του Workflow)

Αρχιτεκτονική, swimlanes, έρευνα αγοράς, workflow ανάπτυξης & προτάσεις — αναλυτικά

Σκοπός: ενιαίο σημείο αναφοράς για το τι είναι το σύστημα, πώς δουλεύει, τι λέει η αγορά και πώς προχωράμε. Συγχρονισμένο με το README.md.
🔀 Διάγραμμα ροής — Αρχιτεκτονική αιτήματος

Πώς ταξιδεύει ένα request από τον browser μέχρι τη βάση και πίσω.

👤 Χρήστης — SPA (Browser) index.html · admin · business · dashboard ⚙️ .htaccess — RewriteEngine υπαρκτό αρχείο/φάκελος → απευθείας /api/* → api/index.php · αλλιώς → index.html (SPA) /api/* 🧭 api/index.php — Router CORS · OPTIONS · parse URI · dispatch module 🔐 AuthMiddleware — JWT Bearer verify · requireAuth / Admin / CompanyAccess 🎛️ Controller auth · admin · business · companies appointments · settings · users 🗄️ Database (PDO) → MySQL prepared statements · 11 πίνακες users · companies · appointments · ... JSON response
🔁 Workflow — Πώς προχωράμε

Κύκλος εργασίας για κάθε task, μέσα σε φάσεις με «gate».

Φάσεις: Α Σταθεροποίηση → Β Ασφάλεια → Γ Core → Δ Features → Ε Ποιότητα Gate: δεν περνάμε σε επόμενη φάση αν η τρέχουσα δεν «πρασινίσει» 1 🎯 Επιλογή task από το roadmap 2 📐 Σχεδιασμός + συμφωνία βήματος 3 🔨 Υλοποίηση 1 μικρό βήμα 4 ✅ Έλεγχος php -l · smoke test 5 🔁 Ενημέρωση status README + Changelog επανάληψη για κάθε task — μικρά βήματα, χωρίς αλλαγές σε production/DB χωρίς συμφωνία
🧭 Αναλυτικό Workflow — Λογική του Web App (από το 0 → τελική υποβολή)

Πώς συνδέονται Admin · Επιχειρήσεις · Πελάτες · Σύστημα, σε όλη τη ροή. ✅ υπάρχει · 🧩 μερικώς · ⬜ να προστεθεί (βάσει έρευνας)

🔐 ADMIN πλατφόρμα 🏢 COMPANY owner · staff 👤 CUSTOMER τελικός πελάτης ⚙️ SYSTEM API · auth 0 · Onboarding 1 · Setup εταιρείας 2 · Δημοσίευση 3 · Κράτηση 4 · Διαχείριση 5 · Ολοκλήρωση 6 · Retention / API Admin panel Δημιουργεί εταιρεία+ owner account ✅Έγκριση (verify) ✅Plan trial/basic/pro ✅ Στήσιμο Login · Προφίλ ✅Staff · Υπηρεσίες ✅Κατηγορίες ⬜Ωράριο/slots ⬜ Ραντεβολόγιο Βλέπει ραντεβού 🧩Διαχείριση status ✅Πελάτες/CRM 🧩 Ολοκλήρωση Completed/No-show ✅Πληρωμή status ✅Μείωση sessions ⬜ Ανάλυση CRM ιστορικό 🧩Analytics/Reports ⬜Marketing ⬜ Discovery Βρίσκει επιχείρηση ✅Φίλτρα/κατηγορία ✅Βλέπει υπηρεσίες ✅ Κράτηση Register/Login/Google ✅Επιλογή slot ✅(ωράριο ⬜)Υποβολή ραντεβού ✅ Retention Review ⬜Gamification ⬜Συνδρομές 🧩 Public site /api/companies ✅Λίστα + /{slug} ✅CMS site_settings ✅ Booking engine JWT auth ✅Conflict check ✅Auto-confirm ✅→ρύθμ. ⬜ Notify + Pay Reminders email/SMS ⬜Πληρωμές Viva/Stripe ⬜myDATA/ΑΦΜ ⬜ Public API API keys ανά εταιρεία ⬜Webhooks ⬜Integrations ⬜ δημιουργεί owner δημοσίευση επιλέγει → ραντεβολόγιο ειδοποίηση ⬜ 🔁 επόμενη κράτηση (gamification ⬜) ✅ υπάρχει στον κώδικα · 🧩 μερικώς · ⬜ να προστεθεί (βάσει έρευνας) · ▸ μωβ/πράσινες γραμμές = ροή χρήστη · κίτρινες διακεκομμένες = προς υλοποίηση

📌 Βήμα-βήμα (από το 0 μέχρι την τελική υποβολή)

0. Onboarding (ADMIN): Ο admin από τη σελίδα Επιχειρήσεις δημιουργεί εταιρεία· αυτόματα φτιάχνεται λογαριασμός owner (αν το email υπάρχει, αναβαθμίζεται). Ορίζει plan & κάνει Έγκριση (is_verified). ✅

1. Setup (COMPANY): Ο owner κάνει login → συμπληρώνει προφίλ, προσθέτει staff (σελίδα Χρήστες της εταιρείας ↔ company_users), δημιουργεί υπηρεσίες. ✅  Λείπουν: κατηγορίες υπηρεσιών (F2), ωράριο/διαθεσιμότητα (F5).

2. Δημοσίευση (SYSTEM): Όταν is_active + is_verified, η εταιρεία εμφανίζεται δημόσια στο /api/companies (+ /{slug} με υπηρεσίες/gallery). Το CMS (admin) ελέγχει το landing. ✅

3. Κράτηση (CUSTOMER → SYSTEM): Ο πελάτης βρίσκει επιχείρηση, κάνει register/login/Google, επιλέγει υπηρεσία & ώρα και υποβάλλει. Το σύστημα ελέγχει JWT + σύγκρουση ώρας και δημιουργεί το ραντεβού (auto-confirm). ✅  Λείπουν: slots βάσει ωραρίου, auto-confirm ως ρύθμιση.

4. Διαχείριση (COMPANY): Το ραντεβού εμφανίζεται στο ραντεβολόγιο της εταιρείας· διαχειρίζεται status/σημειώσεις/πελάτες. 🧩  Λείπουν: reminders email/SMS, online πληρωμή, πλήρες ημερολόγιο (F4).

5. Ολοκλήρωση (COMPANY): Μετά τη συνεδρία → completed / no_show, ενημέρωση πληρωμής. ✅  Λείπει: μείωση sessions_used συνδρομής (C3).

6. Retention / API: Ο πελάτης ξαναμπαίνει — εδώ μπαίνουν gamification (πόντοι/streaks/rewards) & reviews για να επιστρέφει· η εταιρεία βλέπει CRM/analytics· το public API + webhooks ανοίγει integrations. ⬜ Όλα νέα (F1 partial, F6, F7).

🔗 Πώς συνδέονται (data relationships)

  • Admin → Company: δημιουργία εταιρείας + owner (companies + users + company_users.role=owner).
  • Company → Staff/Services: company_users (owner/manager/staff) & services με company_id.
  • Company → Public → Customer: δημόσιο μόνο όταν verified· ο πελάτης βλέπει μέσω /companies.
  • Customer → Appointment → Company: το appointments δένει user_id (πελάτης) + company_id + service_id (+ optional staff_user_id, subscription_id) — το ίδιο record το βλέπουν και οι δύο πλευρές.
  • Isolation: κάθε query φιλτράρει με company_id· ο admin παρακάμπτει. Κάθε ενέργεια → activity_log.
🗄️ Μοντέλο δεδομένων (13 πίνακες)
  • users — χρήστες (role: customer/admin + company roles)
  • companies — επιχειρήσεις (plan, κατηγορία, ΑΦΜ)
  • company_users — M2M χρήστες↔εταιρείες + ρόλος
  • services — υπηρεσίες ανά εταιρεία
  • subscriptions — πακέτα/συνδρομές συνεδριών
  • appointments — ραντεβού
  • auth_tokens — refresh / reset / verify
  • site_settings — CMS δημόσιου site
  • company_content — CMS ανά εταιρεία
  • company_gallery — φωτογραφίες
  • activity_log — audit trail
  • meetings — ατζέντες (AGENDA)
  • meeting_topics — θέματα + σημειώσεις
🔌 API Endpoints (τρέχοντα)
  • auth register · login · logout · refresh · me · forgot/reset · google
  • admin companies · users · company-users (CRUD)
  • settings GET /settings · GET/PUT /admin/settings
  • companies GET λίστα · GET /{slug} (δημόσια)
  • appointments GET/POST/PUT · subscriptions
  • business company · appointments · clients · services
  • users PUT /profile
🔍 Έρευνα αγοράς (αναλυτικά)

Δύο μοντέλα μονετισμού:

Καθαρή συνδρομή (0% προμήθεια): SimplyBook.me (€0→€59.9), Vagaro (~$24-30/calendar), GlossGenius (~$28 solo), Mangomint ($165-375 μεγάλα σαλόνια).

Υβριδικό (συνδρομή + commission σε νέους πελάτες marketplace): Fresha (~$15-20 + 20%), Booksy (~$30 + ~30% Boost).


Ελλάδα: Fresha & Booksy ενεργές. Ελληνικές: Spotable (fitness/wellness — κύριος ανταγωνιστής, καλύπτει όλο το standard set) & VYNE (beauty marketplace, μοντέλο Fresha «0% στους δικούς σου πελάτες»).


Standard (table-stakes): 24/7 booking · ραντεβολόγιο ανά staff · CRM · online πληρωμές · SMS/email reminders · συνδρομές · analytics.

Differentiators (ευκαιρία): API-first (μόνο SimplyBook το έχει σοβαρά — JSON-RPC 2.0) · gamification τελικού πελάτη (κανείς ως standard).

⚠️ Προς επαλήθευση (spikes): S1 myDATA/ΑΑΔΕ & ΑΦΜ (με λογιστή) · S2 gamification best practices · S3 πληρωμές (Viva/Stripe). Δεν επιβεβαιώθηκαν στην έρευνα — χρειάζονται ξεχωριστά.

Πηγές: fresha.com/help-center · simplybook.me/pricing & developer-api · mangomint.com · glossgenius.com · spotable.gr · partners.vyne.gr · vyne.gr · goodcall.com · thesalonbusiness.com

💡 Προτάσεις (βάσει έρευνας)

R1 Μονετισμός: ξεκίνα με συνδρομή (το plan trial/basic/pro υπάρχει ήδη) και κράτα αρχιτεκτονικά ανοιχτό το υβριδικό (marketplace commission) à la VYNE/Fresha για το μέλλον.

R2 API-first = 1η διαφοροποίηση (F6): public API με API keys ανά εταιρεία + webhooks (νέο/ακύρωση ραντεβού). Πρότυπο: SimplyBook (book/reschedule/cancel/availability).

R3 Gamification (F7): πόντοι/ραντεβού · streaks συνέπειας · badges/επίπεδα · referral bonus · progress bar προς συνδρομή · εξαργύρωση σε εκπτώσεις. Πρώτα S2 ανάλυση.

R4 Κλείσε το κενό parity: τα reminders (email/SMS) είναι standard παντού αλλά λείπουν → προτεραιότητα (Φάση Γ).

R5 Ραντεβολόγιο + ωράρια μαζί (F4+F5): πλήρες ημερολόγιο με slots βάσει ωραρίου — βασικό ανταγωνιστικό vs Spotable.

R6 Ελληνική εστίαση: myDATA (S1), Viva Wallet/Stripe (S3), πλήρης ελληνική γλώσσα — τοπικό πλεονέκτημα έναντι διεθνών.

R7 CRM για retention (F1): καρτέλα πελάτη + ιστορικό + σημειώσεις — δένει άμεσα με gamification.


🎯 Προτεινόμενη σειρά:

Φάση Α (fix) → reminders + ωράρια/ραντεβολόγιο (parity) → API-first (διαφοροποίηση) → gamification (μετά S2 ανάλυση).

🔧 Workflows & Τεκμηρίωση

Ροές ανά στάδιο/ρόλο της λογικής — και στη συνέχεια η αναλυτική τεκμηρίωση (αρχιτεκτονική, swimlanes, έρευνα). Ξεκινά εδώ.

υπάρχει · 🧩 μερικώς · να προστεθεί (βάσει έρευνας). Κίτρινες διακεκομμένες = προς υλοποίηση.
🎟️ Μοντέλο v3 + Solo Leveling + Μεταφορά (CANONICAL — 2026-06-15)

🛠️ Υπηρεσία ΠΡΩΤΑ: Owner → προφίλ υπηρεσίας: κατηγορία + mode (open/session) + (session) διάρκεια + θέσεις/session (ταυτόχρονα άτομα στο 1ωρο) + ωράριο (νέος service_hours, ανά weekday 1=Δευ..7=Κυρ) + χρώμα ✅

🎟️ Εγγραφές = πακέτα ΑΝΑ υπηρεσία: μέσα στο προφίλ υπηρεσίας → enrollment_plans (εβδομάδες/τιμή/frequency)· δεν υπάρχει πια ξεχωριστό μενού «Εγγραφές». Bar πακέτου = LEVEL από αριθμό μελών (0-5=Lv1, 5-10=Lv2…) ✅

👥 Μέλη υπηρεσίας: λίστα εγγεγραμμένων μέσα στο προφίλ + manual enroll με αναζήτηση email (POST /business/members) ✅

💳 Αγορά εγγραφής: πελάτης → POST /subscriptions {plan_id} → membership (ισχύς = weeks×7) → μπαίνει αυτόματα στο πελατολόγιο ✅

📅 Κράτηση v3: session → ενεργή membership + έλεγχος ωραρίου-window + θέσεων/session + frequency · open → ελεύθερη είσοδος, ΧΩΡΙΣ slot/κράτηση ✅

🗓️ Ημερολόγιο: μήνας → επιλογή μέρας → session slots + roster (ποιοι είναι μέσα) με avatars → Hunter Profile· popup SL «System notification»· scrollbar στη λίστα μέρας ✅

🟢 Πελατολόγιο: ο πελάτης ΜΕΝΕΙ μετά λήξη/ακύρωση/διαγραφή συνδρομής + badge ● ΕΝΕΡΓΗ / ○ ΑΝΕΝΕΡΓΗ ✅

🎮 UI Solo Leveling: όλο το business panel (Dashboard status window LV/RANK/EXP, Υπηρεσίες gates, Ραντεβού quest log, Hunter Profiles) + admin (Monarch dashboard + TOP GUILDS leaderboard, Guild Registry) ✅

🚚 Μεταφορά: gym.vasis.online → https://mylvlup.gr (ίδιος WHM, νέο cPanel account· DB mylvlup_db4731· W:\ = mylvlup docroot)· backup files+DB μέσω /api/devtool?action=dump

⬜ Go-live που μένει: Google OAuth origin (mylvlup.gr)· cron URL → mylvlup.gr· κλείσιμο dev endpoint· σβήσιμο test data + junk· gym→301· gamification growth rules (πώς μεγαλώνουν stats/EXP/RANK)

📦 Ροές 2026-06-14 (προηγούμενο μοντέλο 4 τύπων — αντικαταστάθηκε από το v3 παραπάνω)

🏷️ Setup τύπων: Admin → «Τύποι & Κατηγορίες» → admin ορίζει τύπο σε εταιρεία → εταιρεία διαλέγει κατηγορία + όνομα + booking_type υπηρεσίας ✅

🕐 Ωράριο → slots: εταιρεία ορίζει ωράριο (Προφίλ) → πελάτης βλέπει πραγματικά διαθέσιμα slots (open→close μείον κλεισμένα/capacity) ✅

📅 Κράτηση (4 τύποι): single=ελεύθερο slot · session=θέσεις < capacity · package=ενεργό πακέτο→credit −1 · subscription=ενεργή + εβδ. όριο → confirmed ✅

💳 Αγορά: πελάτης κλείνει package/subscription χωρίς plan → confirm αγοράς → POST /subscriptions → retry κράτηση ✅ (χωρίς payment gateway ακόμα)

🔔 Ειδοποιήσεις: κράτηση → Notifier → in-app (🔔 bell πελάτη + owner) + email (SMTP) + SMS (gateway)· cron → reminders X ώρες πριν ✅

⭐ Reviews: πελάτης αξιολογεί (μετά από επίσκεψη) → ⭐ public profile + business stats ✅

👁 Impersonation: admin → Πελάτες/Επιχειρήσεις → «Προβολή ως» → νέο tab με το panel του target (προσωρινό token· η σύνδεση admin μένει) ✅

📄 Τιμολόγηση: admin/company βάζουν myDATA creds (settings) → κράτηση → 2.1 Τιμολόγιο (ΑΦΜ) ή 11.2 Απόδειξη (ιδιώτης) → διαβίβαση myDATA 🔄 (settings ✅, έκδοση εκκρεμεί)

⬜ Επόμενα: payment gateway (per-business Viva/Stripe/PayPal)· έκδοση/διαβίβαση τιμολογίων· push· gamification UI

1️⃣ Admin Panel — ροή διαχειριστή
🔐 Admin login (JWT) role = admin; όχι ❌ redirect / ναι 👑 MONARCH Dashboardsystem status · 🏆 TOP GUILDS leaderboard · ⚡ δραστηριότητα 🏢 Επιχειρήσεις 👥 Πελάτες 🔐 Admins 🏷️ Τύποι & Κατηγ. ✏️ CMS ⚙️ Ρυθμίσεις ⚙️ Αλλαγές Συστ. Λίστα + chips/search ✅ ➕ Νέα: εταιρ.+owner ✅ 👁 Στοιχεία | Χρήστες ✓Έγκρ ✏️ ✕ · 👁 ως Λίστα + αναζήτηση ✅ ✏️ · Ενεργ/Απεν · ✕ 👁 Προβολή ως (dashboard) badge ενεργή/ανενεργή Λίστα admins ✅ ➕ Νέος Admin ✅ Τύποι επιχ. (6) ✅ Κατηγορίες (25) ✅ slug auto-translit ✅ Hero/Γεν/Εμφ/Επικ ✅ 💾 PUT /admin/settings ✅ 🔐 Λογ · 📧 Email 📱 SMS · 📄 myDATA 💳 Πληρωμές 💾 αποθήκευση ✅ 📋Πλάνο 📝Changelog 🔧Workflows 📅AGENDA 🎨 Design 👁 Προβολή ως → νέο tab με panel του target (η σύνδεση admin μένει) · ⬜ μελλοντικά: πλάνα/χρεώσεις, στατιστικά πλατφόρμας, audit log
2️⃣ Setup Εταιρείας (Owner) — v3
🏢 Owner login 📊 Dashboard (Solo Leveling)status LV/RANK/EXP · ⚔️ quests ✅ 📝 Προφίλ → PUT company ✅ 🛎️ Υπηρεσίες → ➕ νέα υπηρεσία ✅ κατηγορία + mode (open/session)+ διάρκεια + θέσεις/session+ ωράριο (service_hours) + χρώμα ✅ 📂 Προφίλ υπηρεσίας (κλικ) 🎟️ Εγγραφές/πακέταΑΝΑ υπηρεσίαεβδ/τιμή/freq · level ✅ 👥 Μέλη υπηρεσίαςλίστα εγγεγρ. +manual enroll (email) ✅ ✅ Έτοιμη — publishedμετά από admin verify
3️⃣ Discovery (Πελάτης, public)
👤 Landing / site 🔎 Αναζήτηση + φίλτρα(κατηγορία/πόλη/νομός) ✅ 🏢 Λίστα επιχειρήσεων/api/companies ✅ 📄 Προφίλ /{slug}υπηρεσίες + gallery ✅ ➡️ Κλείσε ραντεβού ⬜ Reviews/βαθμολογίες στο προφίλ
4️⃣ Κράτηση (Booking engine) — v3
🛎️ Επιλογή υπηρεσίας (προφίλ) Συνδεδεμένος; όχι Register/Login/Google ✅ ναι mode υπηρεσίας; open ελεύθερηείσοδοςχωρίς slot ✅ session ενεργήmembership; όχι 💳 Αγοράεγγραφής →membership ✅ ναι 📅 Επιλογή slot (μέσα στο ωράριο) ✅ ✔ έλεγχοι κράτησης (session)ωράριο-window + θέσεις<capacity + frequency ❌ 422 εκτός ok POST /appointments → confirmed ✅ ✅ Τελική υποβολήραντεβού confirmed
5️⃣ Διαχείριση & Ολοκλήρωση (Business) — v3
📊 Business panel (owner) 📅 Ημερολόγιο (Solo Leveling)μήνας → μέρα → session slots + roster ✅ 🪟 popup SL «ποιοι είναι μέσα» · avatars ✅ 📋 Ραντεβού — quest logconfirm / cancel / complete ανά status ✅ 👥 Πελατολόγιο — guild rosterμένει πάντα · badge ● ΕΝΕΡΓΗ / ○ ΑΝΕΝΕΡΓΗ ✅ 🧙 Hunter Profile πελάτηstats/skills · leaderboard · achievements ✅← ανοίγει από slots / Πελατολόγιο / Ραντεβού ⬜ gamification growth rules — πώς μεγαλώνουν stats/EXP/RANK (επόμενο)
6️⃣ Retention & Public API (νέα — βάσει έρευνας)
🔁 Retention πελάτη (gamification) Ολοκληρωμένο ραντεβού ✅ ⭐ Review ⬜ · 🏅 Πόντοι/streaks ⬜ 🎁 Rewards/εκπτώσεις/referral ⬜ 🔁 Επόμενη κράτηση 🔌 Public API (F6) — όλα ⬜ External app / integration 🔑 API key ανά εταιρεία ⬜ book / cancel / availability ⬜ 📡 Webhooks → integrations ⬜ Differentiators από την έρευνα: gamification + API-first (κανείς ανταγωνιστής δεν τα έχει ως standard)

📅 AGENDA

Ραντεβού & θέματα προς συζήτηση — αποθηκεύονται στη βάση (meetings + meeting_topics)

🎨 Design / Μακέτα

Τρέχουσα ταυτότητα (live) + προδιαγραφές παράδοσης νέων μακετών

✅ ΤΡΕΧΟΝ DESIGN (LIVE 2026-06-14): mylvlup — Solo Leveling fitness-leveling, εφαρμοσμένο σε ΟΛΟ το app (landing rebuild + dashboard/business/admin retint). Παλέτα: bg #05060e · accent #3b82ff (μπλε) · accent2 #37e6ff (cyan) · #8b5cff (μωβ) · text #dfe7ff · neon borders/glow. Fonts: Inter (ελληνικά/body) · Orbitron (λατινικά/αριθμοί/τίτλοι). Banner: uploads/mainBanner.png. Backup παλιού landing: index-old.html.
⚡ TL;DR: Ιδανικά Figma link με δικαίωμα Inspect / Dev Mode + τα γραφικά εξαγμένα (SVG για εικονίδια/illustrations, WebP @2x για φωτογραφίες). Αν δοθεί μόνο εικόνα μακέτας, χρειάζομαι μαζί τα specs (χρώματα HEX, γραμματοσειρές, μεγέθη). Όλα σε σκούρο theme, με τις γραμματοσειρές & παλέτα του συστήματος (παρακάτω).
🛠️ Πρόγραμμα σχεδίασης (προτίμηση)
  • Figma — κορυφαία: Dev Mode/Inspect, copy CSS, export SVG/PNG/WebP, design tokens
  • ✔️ Penpot (open-source, παρόμοιο με Figma)
  • ✔️ Adobe XD / Sketch (με δυνατότητα export & specs)
  • ⚠️ Photoshop/Illustrator → μόνο αν δοθούν layers + exported assets + specs
  • ❌ Σκέτο screenshot/flat εικόνα χωρίς specs
📦 Τι να παραδοθεί (2 τρόποι)

Α) Figma (ιδανικό): share link «can view» με Dev Mode ON · κάθε οθόνη = ξεχωριστό Frame με Auto-layout · components/variants για κουμπιά, καρτέλες κ.λπ.

Β) Exported (αν όχι Figma): φάκελος με τα γραφικά (SVG/WebP) + ένα αρχείο specs (χρώματα/fonts/μεγέθη/spacing) — PDF ή PNG με annotations.

🖼️ Format ανά τύπο asset
Τύπος Μορφή Σημείωση
Λογότυπα · εικονίδια · illustrations · σχήματαSVGvector, optimized, χωρίς raster μέσα — μπαίνει inline (όπως τα διαγράμματα)
Φωτογραφίες · raster εικόνεςWebP (+PNG/JPG fallback)σε @2x (retina), βελτιστοποιημένα
Backgrounds · patternsSVG ή WebPtileable αν είναι pattern
Εικονίδια UISVG (ή να πούμε ποιο icon-set)σταθερό grid (π.χ. 24×24)

❌ Όχι τεράστια PNG · ❌ όχι κείμενο «μέσα» στην εικόνα (το κείμενο ως κείμενο, για να είναι responsive/μεταφράσιμο).

📐 Specs που χρειάζομαι (design tokens)
  • Χρώματα: ακριβή HEX/RGBA (+ states)
  • Typography: font, weight, size (px/rem), line-height, letter-spacing
  • Spacing: paddings/margins/gaps σε px
  • Radius & shadows: ακριβείς τιμές
  • Breakpoints: mobile ≤768px · tablet · desktop — πώς αλλάζει το layout
  • States: default / hover / active / focus / disabled
  • Empty / loading / error όπου υπάρχουν
🗂️ Ονοματολογία & δομή
  • Frames με όνομα ανά οθόνη: customer-booking, business-calendar κ.λπ.
  • Filenames σε kebab-case: hero-bg.webp, icon-calendar.svg
  • Χωρίς κενά / ελληνικά / κεφαλαία στα ονόματα αρχείων
  • Ένας φάκελος ανά οθόνη/ενότητα
  • Γραμματοσειρές: δηλωμένες (Google Fonts ή αρχεία font)
🎯 Να ταιριάζει με το υπάρχον σύστημα (χρησιμοποίησε αυτά)

Γραμματοσειρές: Inter (300–600) για κείμενο · Bricolage Grotesque (700–800) για τίτλους. Radius βάσης: 10px · Sidebar: 224px · Theme: dark.

bg #07070f bg2 #0a1028 bg3 #111122 text #dfe7ff accent #3b82ff accent2 #37e6ff gradient success #46f5a0 danger #ff4d6d warning #ffcf5a info #5c9dff

Αν η μακέτα φέρνει νέα γλώσσα χρωμάτων, να παραδοθεί ως πλήρες set tokens (μεταβλητές) για να ενημερωθεί το theme κεντρικά.

⚡ Πιο γρήγορο για άμεσο embed
  • 🥇 Γραφικό/illustration/heroSVG (μπαίνει inline αμέσως, scalable, χρωματίζεται με τις μεταβλητές)
  • 🥈 Ολόκληρη ενότητα/σελίδα → καθαρό HTML/CSS export ή Figma frame που το μεταφράζω σε κώδικα
  • 🥉 Μόνο εικόνα μακέτας → την ξαναχτίζω στο χέρι· τότε απαραίτητα τα specs (χρώματα/fonts/μεγέθη/spacing)
✅ Checklist παράδοσης
  • ☐ Figma link με Inspect/Dev Mode  (ή assets + specs)
  • ☐ SVG για γραφικά · WebP @2x για φωτογραφίες
  • ☐ Όλα τα tokens: χρώματα (HEX/RGBA), γραμματοσειρές, μεγέθη, spacing, radius, shadows
  • ☐ Responsive: mobile (≤768px) + desktop
  • ☐ States: hover / active / focus / disabled + empty / loading / error
  • ☐ Γραμματοσειρές δηλωμένες (Google Fonts ή αρχεία)
  • ☐ Filenames kebab-case, χωρίς κενά/ελληνικά