# MyZenBnB — Roadmap

SaaS λειτουργίας καταλυμάτων · Laravel 13 + Filament 5

Τελευταία ενημέρωση: 26/10/2026  
Επόμενο βήμα: **Φίλτρο «τρέχον κατάλυμα» και ιδιοκτήτες καταλυμάτων, μετά Βάρδιες & Πρόγραμμα (τύπου 7shifts)**

> Πηγή αλήθειας: `public/dev/roadmap/roadmap.json`. Το ίδιο αρχείο τροφοδοτεί το HTML progress roadmap στο https://manage.myzenbnb.gr/dev/roadmap/ (με κωδικό). Μετά από κάθε αλλαγή: `python3 scripts/roadmap.py`.

## Stack

| Πακέτο | Έκδοση |
|---|---|
| PHP | 8.4 |
| Laravel | 13.x |
| Filament | 5.x |
| Livewire | 4.x |
| spatie/laravel-permission | 7.x (teams) |
| MariaDB | 10.11 |

## Αρχιτεκτονικές αποφάσεις

- **Panels**: `Tatooine` (admin πλατφόρμας, `/tatooine`, μόνο για `TATOOINE_ADMINS`) και `Company` (επιχειρήσεις, `/company`· στον κώδικα panel `backstage`).
- **Tenancy**: tenant = `Business`. Ένας λογαριασμός ανήκει σε **πολλές** επιχειρήσεις (`business_user`: ρόλος εργασίας, ενεργός ανά επιχείρηση) και αλλάζει από τον tenant switcher. Ανοίγει η τελευταία που χρησιμοποίησε.
- **Δικαιώματα**: Spatie με teams (`business_id`): ρόλοι κοινοί, ανάθεση ανά επιχείρηση. Όπως στο MyTabloo, ο ρόλος είναι πρότυπο και τα πραγματικά δικαιώματα είναι direct permissions· κανείς δεν δίνει ό,τι δεν έχει (έλεγχος και στον server).
- **Μέλη**: υπάρχον email → ο λογαριασμός προστίθεται στην επιχείρηση. Όνομα/email λογαριασμού που ανήκει και αλλού τα αλλάζει μόνο ο ίδιος. Η «διαγραφή» αφαιρεί από την επιχείρηση· ο λογαριασμός σβήνεται μόνο αν δεν ανήκει πουθενά αλλού.
- **Καταλύματα** (`Property`) στη θέση των Αιθουσών του MyTabloo· τμήματα και χρήστες συνδέονται με καταλύματα.
- **Εκτός scope**: κρατήσεις, πληρωμές πελατών, channel management. Οι κρατήσεις διαβάζονται μόνο από iCal.
- **Μονάδες & χώροι** (`units`): `kind=unit` κλείνεται και είναι γραμμή του ενιαίου ημερολογίου· οι κρατήσεις και τα iCal feeds θα δείχνουν σε `unit_id` (ένα ή περισσότερα feeds ανά μονάδα, π.χ. Airbnb + Booking). `kind=area`: κοινόχρηστος χώρος για καθαριότητα/βλάβες. `parent_id` (ένα επίπεδο): μονάδα που αποτελείται από άλλες· η διπλοκράτηση ελέγχεται στο `Unit::conflictingUnitIds()`. Νέο κατάλυμα εκτός ξενοδοχείου παίρνει αυτόματα μία μονάδα «ολόκληρο».

## 1. Θεμέλια & υποδομή  ·  🔵 Σε εξέλιξη  ·  10/14  ·  εβδ. 26/10

Εγκατάσταση με τις ίδιες εκδόσεις με το MyTabloo, server, βάση, panels, repository και roadmap.

- [x] Laravel 13 + PHP 8.4 στο manage.myzenbnb.gr (docroot: public/) `Server`
- [x] Βάση MariaDB myzenbnb_app, drivers database για session / cache / queue `Server`
- [x] Filament 5 + Livewire 4 + spatie/laravel-permission 7 `Stack`
- [x] Panels: Tatooine (admin, /tatooine) και Company (επιχειρήσεις, /company) `Stack`
- [x] Locale el / fallback en, ζώνη ώρας Europe/Athens `Stack`
- [x] Nginx vhost (cpnginx) για το subdomain `Server`
- [x] Git repository + ROADMAP.md + HTML progress roadmap `Docs`
- [x] DNS: Cloudflare (proxied), A record manage.myzenbnb.gr → 91.229.23.12 `DNS`
- [ ] SSL: AutoSSL στον server (τώρα self-signed, Cloudflare σε Full) `Server`
- [x] Πρόσβαση push του server στο GitHub repo (token) `Git`
- [x] Email: noreply@myzenbnb.gr μέσω SMTP του server `Server`
- [ ] DNS email: SPF με ip4 του server + DKIM στο Cloudflare `DNS`
- [ ] Cron scheduler + queue worker `Server`
- [ ] Ημερήσια backups βάσης `Server`

## 2. Port από MyTabloo: επιχείρηση, προσωπικό, δικαιώματα  ·  ✅ Ολοκληρώθηκε  ·  14/14

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

- [x] Business ως tenant του Backstage (HasTenants) `Tenancy`
- [x] Πολλές επιχειρήσεις ανά χρήστη + tenant switcher + «Νέα επιχείρηση» `Tenancy`
- [x] Δικαιώματα ανά επιχείρηση (Spatie teams) `Δικαιώματα`
- [x] Πολυγλωσσία el/en, language switcher, SetLocale middleware `i18n`
- [x] Themes / branding ανά επιχείρηση (5 παλέτες) `UI`
- [x] Cascading permissions (Spatie) + direct permissions ανά χρήστη `Δικαιώματα`
- [x] Create / Edit / Delete ανά δικαίωμα σε κάθε resource `Δικαιώματα`
- [x] Χρήστες: πρόσκληση, υπάρχων λογαριασμός, ορισμός κωδικού, password reset, προφίλ `Χρήστες`
- [x] Τμήματα (Departments) και Ρόλοι προσωπικού (Staff Roles) `Προσωπικό`
- [x] Database notifications (καμπανάκι) `UI`
- [x] Tatooine: επιχειρήσεις + ιδιοκτήτης, ειδοποιήσεις πλατφόρμας, ρυθμίσεις `Admin`
- [x] ΑΦΜ με έλεγχο ψηφίου και επαλήθευση ΑΑΔΕ (χρειάζεται κωδικούς AADE στο .env) `Admin`
- [x] Σειρά μενού ($navigationSort ανά 10), όπως στο MyTabloo `UI`
- [x] Tests: πολλές επιχειρήσεις, δικαιώματα, μέλη, όλες οι σελίδες (el/en) `Tests`

## 3. Πολλαπλά καταλύματα  ·  🔵 Σε εξέλιξη  ·  5/7

Μία επιχείρηση διαχειρίζεται πολλά καταλύματα (ξενοδοχείο, βίλες, Airbnb) από έναν λογαριασμό.

- [x] Property (κατάλυμα): τύπος, διεύθυνση, GPS, ώρες check-in/out `Model`
- [x] Πρόσβαση χρηστών και τμημάτων ανά κατάλυμα `Δικαιώματα`
- [x] Μονάδες (κλείνονται) και κοινόχρηστοι χώροι ανά κατάλυμα, μαζική προσθήκη δωματίων `Model`
- [x] Συνδυασμοί μονάδων (π.χ. «Ολόκληρη βίλα» = δωμάτια 1–3) για τον έλεγχο διπλοκράτησης `Ημερολόγιο`
- [x] QR token ανά μονάδα, χρώμα και σειρά γραμμής στο ενιαίο ημερολόγιο `Ημερολόγιο`
- [ ] Φίλτρο «τρέχον κατάλυμα» σε όλο το Backstage `UI`
- [ ] Ιδιοκτήτες καταλυμάτων (για property managers) `Model`

## 4. Ημερολόγιο & βάρδιες προσωπικού (τύπου 7shifts)  ·  🟡 Επόμενο  ·  0/10

Βάση: Shifts / Πρόγραμμα / Αμοιβές / Clock scans του MyTabloo, επεκταμένα σε πλήρες scheduling.

- [ ] Πρότυπα βαρδιών ανά κατάλυμα / τμήμα `Βάρδιες`
- [ ] Εβδομαδιαίο board προγράμματος με drag & drop `Βάρδιες`
- [ ] Διαθεσιμότητα προσωπικού `Βάρδιες`
- [ ] Αιτήματα άδειας με έγκριση `Βάρδιες`
- [ ] Ανοιχτές βάρδιες και ανταλλαγές βαρδιών `Βάρδιες`
- [ ] Δημοσίευση προγράμματος + ειδοποιήσεις `Βάρδιες`
- [ ] Έλεγχοι: επικαλύψεις, υπερωρίες, όρια ωρών `Βάρδιες`
- [ ] Clock in/out (QR / συσκευή) και timesheets `Ώρες`
- [ ] Αμοιβές (pay rates) και κόστος εργασίας ανά κατάλυμα `Ώρες`
- [ ] Διερεύνηση: ψηφιακή κάρτα εργασίας ΕΡΓΑΝΗ `Συμμόρφωση`

## 5. PWA προσωπικού  ·  🟡 Επόμενο  ·  0/5

Η εφαρμογή προσωπικού του MyTabloo ως βάση: χωρίς app store, με push.

- [ ] PWA shell, login, εγκατάσταση στην αρχική οθόνη `PWA`
- [ ] Web push (minishlink/web-push) `PWA`
- [ ] «Τι έχω σήμερα»: βάρδιες και tasks `PWA`
- [ ] Πρωινή σύνοψη ημέρας `PWA`
- [ ] Το πρόγραμμά μου, άδειες, ανταλλαγές από το κινητό `PWA`

## 6. MVP λειτουργίας (Φάση 1 του spec)  ·  🟡 Επόμενο  ·  0/19

Ο βασικός κύκλος: κράτηση → καθαρισμός → αίτημα/βλάβη → επίλυση.

- [ ] Εισαγωγή iCal (Booking, Airbnb, Expedia, VRBO) σε ενιαίο ημερολόγιο `Ημερολόγιο`
- [ ] Ειδοποίηση διπλοκράτησης / επικάλυψης `Ημερολόγιο`
- [ ] Χειροκίνητα blocks: ιδιοκτήτης, συντήρηση, κλειστό `Ημερολόγιο`
- [ ] Σήμανση «αναχώρηση και άφιξη την ίδια μέρα» `Ημερολόγιο`
- [ ] Ακύρωση κράτησης → ακύρωση task + ειδοποίηση `Ημερολόγιο`
- [ ] Αυτόματο task καθαρισμού ανά αναχώρηση `Καθαριότητα`
- [ ] Checklists ανά κατάλυμα με φωτογραφίες αναφοράς `Καθαριότητα`
- [ ] Φωτογραφίες ολοκλήρωσης, χρονοσφραγίδα, προαιρετικό GPS `Καθαριότητα`
- [ ] Ροή: βρώμικο → σε εξέλιξη → καθαρό → επιθεωρήθηκε `Καθαριότητα`
- [ ] Αναφορά ζημιάς και ξεχασμένων αντικειμένων `Καθαριότητα`
- [ ] Εξωτερικοί συνεργάτες με δικούς τους χρήστες `Συνεργάτες`
- [ ] Συνεργάτες χωρίς λογαριασμό: email + magic link `Συνεργάτες`
- [ ] Εσωτερικά μηνύματα σε threads ανά κατάλυμα / task `Επικοινωνία`
- [ ] Βασικά tickets βλαβών `Συντήρηση`
- [ ] QR δωματίου: αιτήματα με ταύτιση τηλεφώνου (τελευταία 6 ψηφία) `QR`
- [ ] Δρομολόγηση κατηγορία → ρόλος / ομάδα / συνεργάτης, escalation, ώρες σιωπής `QR`
- [ ] Rate limiting, «ψευδές αίτημα», GDPR διαγραφή τηλεφώνων `QR`
- [ ] Εκτυπώσιμες κάρτες QR σε PDF `QR`
- [ ] Πιλοτική χρήση σε λίγα καταλύματα `Pilot`

## 7. Property managers (Φάση 2 του spec)  ·  ⚪ Αργότερα  ·  0/8

Πλήρες εργαλείο για property managers.

- [ ] Λινά και αναλώσιμα: αποθέματα, κύκλος πλυντηρίου, λίστα αναπλήρωσης `Αποθήκη`
- [ ] Προληπτική συντήρηση (επαναλαμβανόμενες εργασίες) `Συντήρηση`
- [ ] Μητρώο εξοπλισμού: ιστορικό, εγγυήσεις, εγχειρίδια `Συντήρηση`
- [ ] Κανόνας εισόδου με επιβεβαίωση ιδιοκτήτη `Συντήρηση`
- [ ] Κωδικοί πρόσβασης ορατοί μόνο την ημέρα του task `Πρόσβαση`
- [ ] Έξοδα ανά κατάλυμα `Αναφορές`
- [ ] Αναφορές προς ιδιοκτήτες `Αναφορές`
- [ ] Μηνιαία αναφορά εργασιών συνεργατών `Αναφορές`

## 8. Διαφοροποίηση (Φάση 3 του spec)  ·  ⚪ Αργότερα  ·  0/5

Ελληνική συμμόρφωση και ενσωματώσεις.

- [ ] Ημερολόγια λεγιονέλλας, χλωρίου πισίνας, HACCP, πυρασφάλειας `Συμμόρφωση`
- [ ] Λήξεις αδειών και πιστοποιητικών (ΑΜΑ, ΜΗΤΕ, ασφάλειες) `Συμμόρφωση`
- [ ] Αναφορά επιθεώρησης με ένα κλικ `Συμμόρφωση`
- [ ] Ηλεκτρονικές κλειδαριές: Nuki, TTLock, igloohome `Ενσωματώσεις`
- [ ] Αυτόματη μετάφραση μηνυμάτων και αιτημάτων `Ενσωματώσεις`

## 9. Εμπορική διάθεση  ·  ⚪ Αργότερα  ·  0/7

Από pilot σε προϊόν.

- [ ] Απόφαση ονόματος προϊόντος και μοντέλου τιμολόγησης `Business`
- [ ] Έλεγχος πραγματικού iCal export Airbnb / Booking `Έρευνα`
- [ ] Πακέτα / modules / συνδρομές (μοντέλο του MyTabloo, προσαρμοσμένο) `Billing`
- [ ] Συνεντεύξεις με 5–10 ξενοδόχους / ιδιοκτήτες / εταιρείες καθαρισμού `Έρευνα`
- [ ] Πακέτα, συνδρομές, πληρωμές `Billing`
- [ ] Website myzenbnb.gr `Marketing`
- [ ] APP_ENV=production, monitoring, backups `Server`
