Ένας πλήρης οδηγός για να ανεβάσεις τον ψηφιακό κατάλογο online, να φτιάξεις το QR code, και να διαχειρίζεσαι τιμές, προϊόντα και φωτογραφίες — χωρίς προγραμματισμό.
Είναι μια αυτόνομη, πολύ ελαφριά εφαρμογή που εμφανίζει τον κατάλογο/μενού του καταστήματος σε μια κινητόφιλη σελίδα. Οι πελάτες σκανάρουν ένα QR code και βλέπουν πάντα τις τρέχουσες τιμές και προϊόντα.
Στο / — ο κατάλογος που βλέπουν οι πελάτες. Καρτέλες κατηγοριών, δημοφιλέστερα, χάρτης, ωράριο, ένδειξη «Ανοιχτά/Κλειστά».
Στο /admin-login — μπαίνεις με κωδικό και αλλάζεις τιμές, προσθέτεις προϊόντα, ανεβάζεις φωτογραφίες, διαχειρίζεσαι κατηγορίες.
Ο πιο αξιόπιστος τρόπος είναι να ετοιμάσεις τα πάντα τοπικά στον υπολογιστή σου και μετά να ανεβάσεις τον φάκελο. Χρειάζεσαι PHP 8.2+ και Composer τοπικά.
Μέσα στον φάκελο του project, τρέξε:
composer install --optimize-autoloader --no-dev
Αυτό δημιουργεί τον φάκελο vendor/ (δεν περιλαμβάνεται στο ZIP γιατί είναι μεγάλος).
.envΑντίγραψε το .env.example σε .env:
cp .env.example .env
Άνοιξε το .env και βάλε το σωστό APP_URL (το domain σου). Το DB_CONNECTION=sqlite είναι ήδη ρυθμισμένο.
php artisan key:generate
Γεμίζει αυτόματα το APP_KEY στο .env.
# Το αρχείο database/database.sqlite υπάρχει ήδη άδειο
php artisan migrate --seed
Φτιάχνει τους πίνακες και φορτώνει τις κατηγορίες + μερικά προϊόντα-δείγματα.
php artisan serve
Άνοιξε http://localhost:8000. Αν δεις τον κατάλογο, όλα δουλεύουν.
Στο cPanel/Plesk, το «web root» είναι συνήθως ο φάκελος public_html. Έχεις δύο επιλογές:
public_html — π.χ. στο /home/χρήστης/coffee-drop/.coffee-drop/public/ μέσα στο public_html/.public_html/index.php και διόρθωσε τις δύο διαδρομές ώστε να δείχνουν στον φάκελο της εφαρμογής:require __DIR__.'/../coffee-drop/vendor/autoload.php'; $app = require_once __DIR__.'/../coffee-drop/bootstrap/app.php';
Φτιάξε ένα subdomain (π.χ. menu.todomain.gr) και στις ρυθμίσεις «Domains» όρισε ως document root τον φάκελο coffee-drop/public. Δεν χρειάζεται να αγγίξεις το index.php.
Μέσω τερματικού (SSH) ή του File Manager, δώσε δικαιώματα εγγραφής:
chmod -R 775 storage bootstrap/cache chmod 775 database chmod 664 database/database.sqlite chmod -R 775 public/uploads
database.sqlite και στον φάκελο database/ που το περιέχει. Αν λείπει, θα δεις «readonly database» σφάλμα.php artisan config:cache php artisan route:cache php artisan view:cache
Δεν υπάρχει πίνακας χρηστών — ένας μόνο κωδικός προστατεύει τον πίνακα διαχείρισης. Αποθηκεύεται κρυπτογραφημένος (hashed), ποτέ σε απλό κείμενο.
php artisan tinkerecho Hash::make('ο-μυστικός-κωδικός-σου');
Θα βγάλει μια συμβολοσειρά που ξεκινά με $2y$.... Αντίγραψέ την ολόκληρη στο .env:
ADMIN_PASSWORD_HASH=$2y$12$..........................................
.env ενώ τρέχει σε production: τρέξε ξανά php artisan config:cache, αλλιώς ο νέος κωδικός δεν θα φορτωθεί.tinker, φτιάξε το hash τοπικά στον υπολογιστή σου και απλώς αντίγραψε το αποτέλεσμα στο .env του server.Το QR code δεν το παράγει η εφαρμογή — και δεν χρειάζεται. Είναι απλό:
Το domain σου, π.χ. https://menu.todomain.gr. Επίλεξε τύπο «URL / Website».
Προτίμησε SVG ή PNG υψηλής ανάλυσης — δίνει καθαρή εκτύπωση σε κάθε μέγεθος (αυτοκόλλητο, σταντ τραπεζιού, αφίσα).
Μπες στο https://todomain.gr/admin-login, δώσε τον κωδικό, και βλέπεις τον πίνακα διαχείρισης.
Στη λίστα προϊόντων, κάθε γραμμή έχει ένα πεδίο τιμής. Άλλαξε το νούμερο και πάτα Save. Αποθηκεύεται αμέσως (με ένα ✓) χωρίς να φορτώσει ξανά η σελίδα. Η τιμή δέχεται και κείμενο, π.χ. Από 2,40€.
Κάνε κλικ πάνω στη μικρή εικόνα (ή στο τετράγωνο με το +) αριστερά κάθε προϊόντος, διάλεξε αρχείο από το κινητό/υπολογιστή, και ανεβαίνει αυτόματα. Δεκτά: jpg, png, webp — έως 2 MB.
Στη φόρμα «Νέο Προϊόν»: τίτλος, τιμή, περιγραφή, κατηγορία (από λίστα), προαιρετικό «σήμα» (π.χ. 1ο ΣΕ ΠΑΡΑΓΓΕΛΙΕΣ), φωτογραφία και κουτάκι «Δημοφιλές». Πάτα «Προσθήκη Προϊόντος».
Πάτα το εικονίδιο μολυβιού ✎ σε μια γραμμή. Ανοίγει παράθυρο όπου αλλάζεις τίτλο, περιγραφή, κατηγορία, σήμα και αν είναι δημοφιλές.
Στην ενότητα «Κατηγορίες» προσθέτεις νέα, μετονομάζεις υπάρχουσες (άλλαξε το όνομα → «Αποθήκευση»), ή διαγράφεις με το ✕.
Υπολογίζεται αυτόματα από το ωράριο στη δημόσια σελίδα (Δευ–Παρ 07–21, Σάβ 08–20, Κυρ 08–18). Αν αλλάξει το ωράριο, ζήτησέ μου να το προσαρμόσω — είναι μέσα στο resources/views/catalog.blade.php.
Τα σημεία που πιθανόν να αγγίξεις είναι επισημασμένα.
database/database.sqlite και τον φάκελο public/uploads/. Αυτά περιέχουν όλα τα προϊόντα, τιμές και φωτογραφίες.| Σύμπτωμα | Πιθανή αιτία & λύση |
|---|---|
| 500 / λευκή σελίδα | Συνήθως permissions ή λείπει το APP_KEY. Τρέξε php artisan key:generate και έλεγξε τα δικαιώματα του storage/ (775). Δες το storage/logs/laravel.log. |
| «readonly database» | Η SQLite δεν έχει δικαίωμα εγγραφής. chmod 664 database/database.sqlite και chmod 775 database. |
| Ο νέος κωδικός δεν δουλεύει | Άλλαξες το .env αλλά μένει η cache. Τρέξε php artisan config:cache. |
| Δεν ανεβαίνουν φωτογραφίες | Ο φάκελος public/uploads/ δεν είναι εγγράψιμος (chmod -R 775 public/uploads) ή το αρχείο > 2MB / λάθος τύπος. |
| Οι φωτογραφίες δεν φαίνονται στη σελίδα | Με την Επιλογή Α, ο φάκελος uploads πρέπει να βρίσκεται μέσα στο public_html/. Βεβαιώσου ότι το APP_URL στο .env είναι σωστό. |
| 404 σε όλες τις σελίδες εκτός αρχικής | Λείπει το mod_rewrite ή το .htaccess. Βεβαιώσου ότι ανέβηκε το public/.htaccess και ότι ο server επιτρέπει rewrites. |
| Αλλαγές δεν φαίνονται | Καθάρισε τις caches: php artisan optimize:clear. |
.env σε production, τρέξε php artisan optimize:clear και μετά ξανά τα config:cache / route:cache / view:cache.