EN: Lightweight restaurant operating system — digital QR menus, waiter ordering, kitchen display (KDS), manager dashboard, and real-time updates.
EL: Ελαφρύ σύστημα διαχείρισης εστιατορίου — ψηφιακά μενού QR, παραγγελίες σερβιτόρων, οθόνη κουζίνας (KDS), πίνακας διαχείρισης και ενημερώσεις σε πραγματικό χρόνο.
Website / Ιστοσελίδα: barestomanager.eu
EN: Staff interface on desktop and mobile (waiter ordering on a phone over Wi‑Fi), guest QR menu preview and printout, and what customers see after scanning a table QR.
EL: Διεπαφή προσωπικού σε desktop και κινητό (παραγγελία σερβιτόρου από τηλέφωνο στο Wi‑Fi), προεπισκόπηση και εκτύπωση QR μενού επισκεπτών, και η εμπειρία πελάτη μετά το σκάναρισμα QR τραπεζιού.
| Kitchen (KDS) | Menu management |
|---|---|
![]() |
![]() |
| Floor plan | Tables list |
|---|---|
![]() |
![]() |
| Guest menu & QR hub | Guest waiter call alert |
|---|---|
![]() |
![]() |
| Printed QR menu cards |
|---|
![]() |
| Order flow | Tables |
|---|---|
EN: What guests see on their phone after scanning the table QR — bilingual menu, allergens, and Call waiter.
EL: Τι βλέπουν οι πελάτες στο κινητό μετά το σκάναρισμα QR τραπεζιού — δίγλωσσο μενού, αλλεργιογόνα και Καλέστε σερβιτόρο.
| Menu & starters (EN) | Main dishes (ΕΛ) |
|---|---|
| Layer | Technology |
|---|---|
| Backend | Python 3.12+, Django 5, Django REST Framework |
| Real-time | Django Channels 4, Daphne, Redis (production) |
| Database | SQLite (local) / PostgreSQL (production) |
| Staff UI | Django templates, HTMX, Alpine.js, Tailwind CSS |
| API auth | JWT (SimpleJWT) |
| i18n | Greek (default) + English — UI and menu content |
- Python 3.12 or newer (installed automatically on Windows by
Start-BarestoManager.batwhen possible) pipandvenv- Optional: Docker & Docker Compose for PostgreSQL + Redis
Windows users: see Quick start (3 steps) — no Command Prompt required.
This section is for a plain Windows 10 or 11 PC — no programming background assumed. The demo database and images are already included; you do not need PostgreSQL, Redis, or Docker for a local trial.
- Download the project — GitHub → green Code → Download ZIP → extract to e.g.
Documents\baresto_manager. - Double-click
Start-BarestoManager.batin that folder (same level asmanage.py). - Wait for the browser — the launcher sets everything up on first run and opens http://127.0.0.1:8765/login/ automatically.
Leave the black console window open while you use the app. Press Ctrl + C in that window to stop the server.
Log in with a demo account — see Demo accounts (e.g. waiter: waiter / waiter1234, or PIN 2222 at /login/pin/).
On every later run, double-click Start-BarestoManager.bat again (setup is skipped after the first time).
To update to the latest version: stop the server (Ctrl+C), then double-click Update-BarestoManager.bat (or BarestoUpdate.exe). It downloads updates from GitHub and runs migrations. Your .env, database, and media are preserved.
| Item | Details |
|---|---|
| Computer | Windows 10 or 11 (64-bit) |
| Internet | First run only — downloads Python (if needed) and Python libraries (~5–15 minutes) |
| Disk space | About 500 MB free |
| Browser | Microsoft Edge, Chrome, or Firefox |
| Optional — phone/tablet | Same Wi‑Fi as the PC for the waiter app |
You do not need: a server, a credit card, Linux, Docker, or prior coding experience.
The launcher tries to install Python 3.12 automatically via winget if it is missing. If that fails, see Install Python manually below.
Option A — Download ZIP (easiest)
- Open the project page on GitHub in your browser.
- Click the green Code button → Download ZIP.
- Right-click the ZIP → Extract All… → choose e.g.
Documents\baresto_manager.
Option B — Git
If you already use Git, clone the repository into a folder such as Documents\baresto_manager.
Only needed if the launcher cannot install Python for you.
- Open https://www.python.org/downloads/windows/ in your browser.
- Download Python 3.12 or newer.
- Run the installer.
- On the first screen, turn on “Add python.exe to PATH” (bottom checkbox) — this is important.
- Click Install Now and wait until it finishes.
Check: Win + R → cmd → Enter → python --version — you should see Python 3.12.x.
If you prefer not to use the batch launcher:
First time:
cd Documents\baresto_manager
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements\local.txt
copy .env.example .env
python manage.py runserverEvery time after:
cd Documents\baresto_manager
.venv\Scripts\activate
python manage.py runserverThen open http://127.0.0.1:8765/login/ in your browser.
| File | Purpose |
|---|---|
Start-BarestoManager.bat |
Recommended — setup + run; installs Python via winget if needed |
BarestoManager.exe |
Same behaviour as a single .exe — build on Windows |
scripts/windows/baresto_launcher.py |
Launcher source (used by the .bat and .exe) |
What the launcher does automatically
- Finds the project folder (
manage.py) - Installs Python 3.12 via
wingetif missing (or opens python.org) - Creates
.venvand runspip install -r requirements/local.txt(first run only) - Copies
.env.example→.envif needed, runs database migrations - Starts the dev server on port 8765
- Opens the login page in your default browser
More detail: scripts/windows/README.md.
The .exe must be built on a Windows PC (PyInstaller cannot cross-compile from macOS/Linux). After extracting the project:
cd scripts\windows
build-exe.batThis copies BarestoManager.exe to the project root. Place it next to manage.py and double-click. Distribute the whole project folder (ZIP) together with the exe — the exe is a launcher, not a standalone app bundle.
- PC and phone on the same home Wi‑Fi (not guest network).
- In Command Prompt, type
ipconfigand note your PC’s IPv4 Address (e.g.192.168.1.15). - The launcher adds a Windows Firewall rule for inbound TCP on port 8765 (private networks). If that fails, right-click
scripts\windows\Add-Firewall-Rule.bat→ Run as administrator (one time). - On the phone browser, open:
http://<IPv4-ADDRESS>:8765/login/pin/(example:http://192.168.1.15:8765/login/pin/).
| Problem | What to try |
|---|---|
'python' is not recognized |
Install Python with Add python.exe to PATH, or let the launcher use winget; open a new window after install. |
'pip' is not recognized |
Use python -m pip install -r requirements\local.txt instead of pip install …. |
manage.py not found |
Run Start-BarestoManager.bat from the folder that contains manage.py, not from inside scripts\. |
| Page does not load | Make sure the server window is still open; use port 8765, not 8000. |
| Phone cannot connect | Same Wi‑Fi; run scripts\windows\Add-Firewall-Rule.bat as administrator if needed; use the PC’s IPv4 from ipconfig. |
| Port already in use | Close the other app on 8765, or change DJANGO_PORT in .env. |
For a fresh empty database instead of the bundled demo, see Quick start (local) below.
For macOS (Apple Silicon or Intel) or Linux (Ubuntu, Debian, Fedora, etc.) — no prior coding experience assumed. The demo database and images are already included; PostgreSQL, Redis, and Docker are optional.
| Item | Details |
|---|---|
| Computer | Mac (macOS 12+) or Linux PC (64-bit) |
| Internet | First-time download of Python and project files (~5 minutes) |
| Disk space | About 500 MB free |
| Browser | Safari, Chrome, Firefox, or Edge |
| Optional — phone/tablet | Same Wi‑Fi as the computer for the waiter app |
You do not need: a cloud server or paid hosting for a local trial.
macOS
- Open https://www.python.org/downloads/macos/ and download Python 3.12 or newer.
- Open the
.pkginstaller and follow the prompts (defaults are fine). - Open Terminal (Spotlight: Cmd + Space, type
Terminal, Enter) and check:
python3 --versionAlternative (developers): Homebrew — brew install python@3.12
Linux (Ubuntu / Debian)
sudo apt update
sudo apt install python3 python3-venv python3-pip
python3 --versionLinux (Fedora)
sudo dnf install python3 python3-pip
python3 --versionOn other distributions, install Python 3.12+ and a venv module from your package manager.
Option A — Download ZIP
- Open the project on GitHub → Code → Download ZIP.
- Unzip to e.g.
~/Documents/baresto_manager.
Option B — Git
cd ~/Documents
git clone https://github.com/atzounis/baresto_manager.git
cd baresto_manager- Open Terminal.
- Go to the project folder (adjust the path if needed):
cd ~/Documents/baresto_manager- Run one line at a time. The first
pip installmay take several minutes.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements/local.txt
cp .env.example .env
python manage.py runserver- Leave Terminal open while using the app. When you see “Starting development server”, open:
- Log in with a demo account — see Demo accounts (e.g. waiter:
waiter/waiter1234, PIN2222at/login/pin/).
Stop the server: Ctrl + C in Terminal.
cd ~/Documents/baresto_manager
source .venv/bin/activate
python manage.py runserverThen open http://127.0.0.1:8765/login/.
- Computer and phone on the same Wi‑Fi (not guest network).
- Find your computer’s LAN address:
- macOS:
ipconfig getifaddr en0(Wi‑Fi) or check System Settings → Network - Linux:
hostname -I | awk '{print $1}'orip -4 addr show
- macOS:
- On the phone, open:
http://<LAN-IP>:8765/login/pin/(example:http://192.168.1.42:8765/login/pin/).
On macOS, allow Python through the firewall if prompted. On Linux, ensure port 8765 is not blocked by ufw or similar.
| Problem | What to try |
|---|---|
python3: command not found |
Install Python (see above) or use the full path from which python3. |
ensurepip / venv errors on Linux |
Install the python3-venv package (sudo apt install python3-venv). |
pip install fails on newer Ubuntu |
Use the virtualenv above; do not install into system Python. |
| Page does not load | Keep runserver running; use port 8765, not 8000. |
| Phone cannot connect | Same Wi‑Fi, correct LAN IP, firewall allows the server. |
For a fresh empty database instead of the bundled demo, see Quick start (local) below.
# 1. Clone and enter the project
cd baresto_manager
# 2. Virtual environment
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 3. Dependencies
pip install -r requirements/local.txt
# 4. Environment (copy and adjust port / URLs if needed)
cp .env.example .env
# 5. Run development server (pre-seeded db.sqlite3 + media/ included)
python manage.py runserverOpen http://127.0.0.1:8765/login/ — see Development server below.
To start from an empty database instead:
python manage.py migrate
python manage.py seed_demo
python manage.py generate_qr_codes
python manage.py runserverOpen http://127.0.0.1:8765/login/ — see Development server below.
Copy .env.example to .env and adjust as needed.
| Variable | Default | Purpose |
|---|---|---|
DJANGO_SETTINGS_MODULE |
config.settings.local |
Settings module |
SECRET_KEY |
(change in production) | Django secret key |
DEBUG |
True |
Debug mode (local) |
ALLOWED_HOSTS |
localhost,127.0.0.1 |
Allowed HTTP hosts (see phone access below) |
ALLOWED_HOSTS_EXTRA |
(empty) | Extra hosts, comma-separated |
DJANGO_BIND |
0.0.0.0 |
Listen address (0.0.0.0 = LAN devices can connect) |
DJANGO_PORT |
8765 |
Local dev server port (not Django’s 8000) |
SITE_BASE_URL |
http://127.0.0.1:8765 |
Public base URL for QR codes and links |
CSRF_TRUSTED_ORIGINS |
(auto in local) | Override CSRF origins if needed |
DATABASE_URL |
SQLite file | Database connection |
REDIS_URL |
redis://127.0.0.1:6379/1 |
Redis (cache / channels) |
USE_INMEMORY_CHANNELS |
True |
In-memory WebSockets locally; set False with Redis |
SITE_BASE_URL must match how you reach the app (host + port). After changing it, regenerate QR images:
python manage.py generate_qr_codesThe project uses port 8765 by default instead of Django’s 8000, so it does not clash with other local apps.
| Command | Result |
|---|---|
python manage.py runserver |
Starts on 0.0.0.0:8765 (DJANGO_BIND + DJANGO_PORT from .env) |
python manage.py runserver 127.0.0.1:9000 |
Explicit host/port (overrides default) |
Change the default port in .env:
DJANGO_PORT=9000
SITE_BASE_URL=http://127.0.0.1:9000Restart runserver after editing .env, then run generate_qr_codes if you use printed QR menus.
config/settings/local.py automatically:
- Adds your Mac’s LAN IP to
ALLOWED_HOSTS - Builds
CSRF_TRUSTED_ORIGINSfor login from a phone
- Mac and phone on the same Wi‑Fi (not guest).
- In
.env, keepDJANGO_BIND=0.0.0.0. - Allow Python incoming in LuLu (or your firewall).
- Find your Mac IP:
ipconfig getifaddr en0 - On the phone, open:
http://<MAC-IP>:8765/login/pin/(waiter PIN:2222).
Optional — set QR / public URL to the LAN address:
SITE_BASE_URL=http://192.168.1.42:8765
ALLOWED_HOSTS_EXTRA=192.168.1.42Check detected hosts:
python manage.py shell -c "from django.conf import settings; print(settings.ALLOWED_HOSTS)"| Role | Username | Password | PIN |
|---|---|---|---|
| Admin | admin |
admin1234 |
0000 |
| Manager | manager |
manager1234 |
1111 |
| Waiter | waiter |
waiter1234 |
2222 |
| Waiter 2 | waiter2 |
waiter2234 |
2233 |
| Kitchen | kitchen |
kitchen1234 |
3333 |
| Cashier | cashier |
cashier1234 |
4444 |
- Password login:
/login/ - PIN login (shared tablet):
/login/pin/
Create or refresh these accounts anytime (requires an existing restaurant — run seed_demo first on a fresh database):
python manage.py seed_demo_usersOn demo servers, set DEMO_SHOW_LOGIN_HINTS=True in .env to display this table on the login pages (defaults to DEBUG).
| Role | What they can do |
|---|---|
| Waiter | View tables, open sessions, take orders (+ quantity badges, live order drawer), send to kitchen, close table (bill + free table) |
| Kitchen | KDS — see incoming orders, update item status (real-time WebSocket) |
| Manager | Menu & categories (bilingual), company legal details, guest menu preview, QR print, tables/floors, floor plan, reports |
| Admin | Everything managers can do, plus staff user management (/staff/users/) |
| Path | Description |
|---|---|
/login/ |
Staff password login |
/login/pin/ |
PIN quick login |
/tables/ |
Table list & floor plan (filter by floor) |
/orders/new/<session_id>/ |
Waiter ordering |
/kitchen/ |
Kitchen display |
/menu/ |
Menu management |
/menu/guest/ |
Guest menu preview & QR printing |
/company/ |
Company / legal catalogue (guest menu) |
/staff/users/ |
Staff users (admin only) |
/qr/<table-uuid>/ |
Public guest menu (per table) |
/qr/menu/<restaurant-uuid>/ |
Shared guest menu (no table) |
/api/v1/ |
REST API |
/admin/ |
Django admin |
The app interface defaults to Greek. Use the ΕΛ / EN switcher in the navigation bar.
After changing translatable strings in templates:
python manage.py makemessages -l el --ignore=.venv
# Edit locale/el/LC_MESSAGES/django.po
python manage.py compilemessages -l elDish names, descriptions, and categories are stored per language (name_el, name_en, etc.) via django-modeltranslation.
- Edit products at
/menu/items/<id>/edit/(Greek + English fields) - Or use Django admin
Sync legacy single-language data:
python manage.py sync_menu_translations- Log in as manager or admin
- Go to Guest menu (
/menu/guest/) - Preview the customer view
- Print either:
- One QR for all tables — same menu URL everywhere
- QR per table — includes table name on menu and printout
Set SITE_BASE_URL in .env to your public URL (scheme + host + port) so printed QR codes work on phones. See Configuration (.env).
- Manage tables — add/edit/delete tables, set seat count
- + Add floor — modal to create floors; filter tables by floor
- Floor plan — drag tables, save layout
python manage.py seed_demo # Demo restaurant, menu, staff, tables
python manage.py seed_demo_users # Demo staff only (passwords + PINs)
python manage.py generate_qr_codes # Regenerate table QR images
python manage.py rotate_qr_tokens # New QR tokens (invalidates old links)
python manage.py sync_menu_translations
python manage.py close_stale_orders --hours 8
python manage.py export_daily_report --date 2026-05-23
python manage.py compilemessages -l elcp .env.example .envEdit .env:
DATABASE_URL=postgres://baresto:baresto@db:5432/baresto
REDIS_URL=redis://redis:6379/1
USE_INMEMORY_CHANNELS=False
DJANGO_PORT=8765
SITE_BASE_URL=http://127.0.0.1:8765docker compose up --buildApp URL: http://127.0.0.1:8765
pytestCopy logos into static/brand/ (see static/brand/README.md):
cp images/barestomanager-horizontal-logo.png static/brand/baresto-horizontal.png
cp images/barestomanager-vertical-logo.png static/brand/baresto-vertical.png| Επίπεδο | Τεχνολογία |
|---|---|
| Backend | Python 3.12+, Django 5, Django REST Framework |
| Real-time | Django Channels 4, Daphne, Redis (παραγωγή) |
| Βάση δεδομένων | SQLite (τοπικά) / PostgreSQL (παραγωγή) |
| UI προσωπικού | Django templates, HTMX, Alpine.js, Tailwind CSS |
| API | JWT (SimpleJWT) |
| Γλώσσες | Ελληνικά (προεπιλογή) + Αγγλικά — διεπαφή και μενού |
- Python 3.12 ή νεότερο (εγκαθίσταται αυτόματα σε Windows από το
Start-BarestoManager.batόπου είναι δυνατό) pipκαιvenv- Προαιρετικά: Docker & Docker Compose για PostgreSQL + Redis
Windows: δείτε Γρήγορη εκκίνηση (3 βήματα) — χωρίς Command Prompt.
Αυτή η ενότητα απευθύνεται σε απλό PC με Windows 10 ή 11 — χωρίς προγραμματιστικές γνώσεις. Η demo βάση και οι εικόνες περιλαμβάνονται ήδη· δεν χρειάζεται PostgreSQL, Redis ή Docker για δοκιμή στον υπολογιστή σας.
- Λήψη project — GitHub → πράσινο Code → Download ZIP → εξαγωγή π.χ. σε
Documents\baresto_manager. - Διπλό κλικ στο
Start-BarestoManager.batστον φάκελο (δίπλα στοmanage.py). - Περιμένετε τον browser — ο launcher κάνει όλη την εγκατάσταση την πρώτη φορά και ανοίγει αυτόματα το http://127.0.0.1:8765/login/.
Αφήστε το μαύρο παράθυρο κονσόλας ανοιχτό όσο χρησιμοποιείτε την εφαρμογή. Ctrl + C στο παράθυρο για διακοπή του server.
Σύνδεση με demo λογαριασμό — Λογαριασμοί επίδειξης (π.χ. σερβιτόρος: waiter / waiter1234, PIN 2222 στο /login/pin/).
Κάθε επόμενη φορά: ξανά διπλό κλικ στο Start-BarestoManager.bat (η εγκατάσταση γίνεται μόνο την πρώτη φορά).
Ενημέρωση: σταματήστε τον server (Ctrl+C), μετά διπλό κλικ στο Update-BarestoManager.bat (ή BarestoUpdate.exe). Κατεβάζει την τελευταία έκδοση από GitHub και τρέχει migrations. Διατηρούνται το .env, η βάση και τα media.
| Στοιχείο | Λεπτομέρειες |
|---|---|
| Υπολογιστής | Windows 10 ή 11 (64-bit) |
| Internet | Μόνο την πρώτη φορά — Python (αν λείπει) και βιβλιοθήκες (~5–15 λεπτά) |
| Χώρος δίσκου | Περίπου 500 MB ελεύθερα |
| Browser | Microsoft Edge, Chrome ή Firefox |
| Προαιρετικά — κινητό/tablet | Ίδιο Wi‑Fi με τον PC για εφαρμογή σερβιτόρου |
Δεν χρειάζεστε: server, πιστωτική κάρτα, Linux, Docker ή προηγούμενη εμπειρία προγραμματισμού.
Ο launcher προσπαθεί να εγκαταστήσει Python 3.12 αυτόματα μέσω winget. Αν αποτύχει, δείτε Εγκατάσταση Python χειροκίνητα παρακάτω.
Επιλογή Α — Λήψη ZIP (πιο εύκολη)
- Ανοίξτε τη σελίδα του project στο GitHub.
- Πράσινο κουμπί Code → Download ZIP.
- Δεξί κλικ στο ZIP → Extract All… → π.χ.
Documents\baresto_manager.
Επιλογή Β — Git
Αν έχετε ήδη Git, κάντε clone το repository σε φάκελο όπως Documents\baresto_manager.
Μόνο αν ο launcher δεν μπορεί να εγκαταστήσει Python.
- Ανοίξτε https://www.python.org/downloads/windows/.
- Κατεβάστε Python 3.12 ή νεότερο.
- Τρέξτε το installer.
- Ενεργοποιήστε «Add python.exe to PATH» στην πρώτη οθόνη.
- Install Now και περιμένετε.
Έλεγχος: Win + R → cmd → python --version — θα πρέπει να δείτε Python 3.12.x.
Πρώτη φορά:
cd Documents\baresto_manager
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements\local.txt
copy .env.example .env
python manage.py runserverΚάθε φορά μετά:
cd Documents\baresto_manager
.venv\Scripts\activate
python manage.py runserverBrowser: http://127.0.0.1:8765/login/
| Αρχείο | Σκοπός |
|---|---|
Start-BarestoManager.bat |
Προτείνεται — εγκατάσταση + εκκίνηση· εγκαθιστά Python via winget αν λείπει |
BarestoManager.exe |
Ίδια συμπεριφορά ως .exe — build σε Windows |
scripts/windows/baresto_launcher.py |
Πηγαίος κώδικας launcher (.bat και .exe) |
Τι κάνει αυτόματα ο launcher
- Βρίσκει τον φάκελο project (
manage.py) - Εγκαθιστά Python 3.12 via
wingetαν λείπει (ή ανοίγει python.org) - Δημιουργεί
.venvκαιpip install -r requirements/local.txt(μόνο πρώτη φορά) - Αντιγράφει
.env.example→.env, τρέχει migrations - Εκκινεί server στη θύρα 8765
- Ανοίγει τη σελίδα σύνδεσης στον default browser
Λεπτομέρειες: scripts/windows/README.md.
Το .exe πρέπει να χτιστεί σε PC με Windows (το PyInstaller δεν κάνει cross-compile από macOS/Linux). Μετά την εξαγωγή του project:
cd scripts\windows
build-exe.batΑντιγράφει το BarestoManager.exe στη ρίζα του project. Τοποθετήστε το δίπλα στο manage.py και κάντε διπλό κλικ. Διανέμετε ολόκληρο τον φάκελο project (ZIP) μαζί με το exe.
- PC και κινητό στο ίδιο Wi‑Fi σπιτιού (όχι guest).
- Στο Command Prompt:
ipconfig→ σημειώστε IPv4 Address (π.χ.192.168.1.15). - Ο launcher προσθέτει κανόνα Windows Firewall για εισερχόμενες συνδέσεις TCP στη θύρα 8765 (private networks). Αν αποτύχει, κάντε δεξί κλικ στο
scripts\windows\Add-Firewall-Rule.bat→ Run as administrator (μία φορά). - Στο κινητό:
http://<IPv4>:8765/login/pin/(π.χ.http://192.168.1.15:8765/login/pin/).
| Πρόβλημα | Τι να δοκιμάσετε |
|---|---|
'python' is not recognized |
Εγκατάσταση Python με Add to PATH, ή αφήστε τον launcher να χρησιμοποιήσει winget· νέο παράθυρο μετά την εγκατάσταση. |
'pip' is not recognized |
python -m pip install -r requirements\local.txt. |
manage.py not found |
Τρέξτε το Start-BarestoManager.bat από τον φάκελο με το manage.py, όχι από scripts\. |
| Δεν ανοίγει η σελίδα | Το παράθυρο server πρέπει να είναι ανοιχτό· θύρα 8765, όχι 8000. |
| Το κινητό δεν συνδέεται | Ίδιο Wi‑Fi· τρέξτε scripts\windows\Add-Firewall-Rule.bat ως administrator αν χρειάζεται· IPv4 από ipconfig. |
| Η θύρα είναι κατειλημμένη | Κλείστε την άλλη εφαρμογή στη 8765 ή αλλάξτε DJANGO_PORT στο .env. |
Για καθαρή βάση αντί της έτοιμης demo, δείτε Γρήγορη εκκίνηση (τοπικά) παρακάτω.
Για macOS (Apple Silicon ή Intel) ή Linux (Ubuntu, Debian, Fedora κ.λπ.) — χωρίς προγραμματιστικές γνώσεις. Η demo βάση και οι εικόνες περιλαμβάνονται ήδη· PostgreSQL, Redis και Docker είναι προαιρετικά.
| Στοιχείο | Λεπτομέρειες |
|---|---|
| Υπολογιστής | Mac (macOS 12+) ή Linux PC (64-bit) |
| Internet | Πρώτη φορά για λήψη Python και αρχείων (~5 λεπτά) |
| Χώρος δίσκου | Περίπου 500 MB ελεύθερα |
| Browser | Safari, Chrome, Firefox ή Edge |
| Προαιρετικά — κινητό/tablet | Ίδιο Wi‑Fi με τον υπολογιστή για εφαρμογή σερβιτόρου |
Δεν χρειάζεστε cloud server ή πληρωμένο hosting για τοπική δοκιμή.
macOS
- Ανοίξτε https://www.python.org/downloads/macos/ και κατεβάστε Python 3.12 ή νεότερο.
- Τρέξτε το
.pkginstaller (προεπιλογές OK). - Ανοίξτε Terminal (Spotlight: Cmd + Space,
Terminal, Enter) και ελέγξτε:
python3 --versionΕναλλακτικά (developers): Homebrew — brew install python@3.12
Linux (Ubuntu / Debian)
sudo apt update
sudo apt install python3 python3-venv python3-pip
python3 --versionLinux (Fedora)
sudo dnf install python3 python3-pip
python3 --versionΣε άλλες διανομές, εγκαταστήστε Python 3.12+ και module venv από το package manager.
Επιλογή Α — Λήψη ZIP
- Σελίδα project στο GitHub → Code → Download ZIP.
- Αποσυμπίεση π.χ. σε
~/Documents/baresto_manager.
Επιλογή Β — Git
cd ~/Documents
git clone https://github.com/atzounis/baresto_manager.git
cd baresto_manager- Ανοίξτε Terminal.
- Μεταβείτε στον φάκελο (αλλάξτε διαδρομή αν χρειάζεται):
cd ~/Documents/baresto_manager- Τρέξτε μία γραμμή τη φορά. Το πρώτο
pip installμπορεί να πάρει αρκετά λεπτά.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements/local.txt
cp .env.example .env
python manage.py runserver- Αφήστε το Terminal ανοιχτό. Όταν δείτε «Starting development server», ανοίξτε:
- Σύνδεση με demo λογαριασμό — Λογαριασμοί επίδειξης (π.χ. σερβιτόρος:
waiter/waiter1234, PIN2222στο/login/pin/).
Διακοπή: Ctrl + C στο Terminal.
cd ~/Documents/baresto_manager
source .venv/bin/activate
python manage.py runserverΜετά ανοίξτε http://127.0.0.1:8765/login/.
- Υπολογιστής και κινητό στο ίδιο Wi‑Fi (όχι guest).
- Διεύθυνση LAN:
- macOS:
ipconfig getifaddr en0ή Ρυθμίσεις συστήματος → Δίκτυο - Linux:
hostname -I | awk '{print $1}'ήip -4 addr show
- macOS:
- Στο κινητό:
http://<LAN-IP>:8765/login/pin/(π.χ.http://192.168.1.42:8765/login/pin/).
Στο macOS, επιτρέψτε Python στο firewall αν ζητηθεί. Στο Linux, βεβαιωθείτε ότι η θύρα 8765 δεν μπλοκάρεται από ufw κ.λπ.
| Πρόβλημα | Τι να δοκιμάσετε |
|---|---|
python3: command not found |
Εγκατάσταση Python (παραπάνω) ή πλήρης διαδρομή από which python3. |
Σφάλματα venv / ensurepip στο Linux |
sudo apt install python3-venv |
Αποτυχία pip install σε νέο Ubuntu |
Χρησιμοποιήστε virtualenv· όχι system Python. |
| Δεν ανοίγει η σελίδα | Το runserver πρέπει να τρέχει· θύρα 8765, όχι 8000. |
| Το κινητό δεν συνδέεται | Ίδιο Wi‑Fi, σωστό LAN IP, firewall. |
Για καθαρή βάση αντί της έτοιμης demo, δείτε Γρήγορη εκκίνηση (τοπικά) παρακάτω.
# 1. Μετάβαση στον φάκελο του project
cd baresto_manager
# 2. Εικονικό περιβάλλον
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 3. Εξαρτήσεις
pip install -r requirements/local.txt
# 4. Ρυθμίσεις περιβάλλοντος (αντιγραφή .env — προσαρμογή θύρας / URL)
cp .env.example .env
# 5. Εκκίνηση server ανάπτυξης (περιλαμβάνονται db.sqlite3 + media/)
python manage.py runserverΑνοίξτε http://127.0.0.1:8765/login/ — δείτε Development server παρακάτω.
Για καθαρή βάση από την αρχή:
python manage.py migrate
python manage.py seed_demo
python manage.py generate_qr_codes
python manage.py runserverΑντιγράψτε το .env.example σε .env και προσαρμόστε όπου χρειάζεται.
| Μεταβλητή | Προεπιλογή | Σκοπός |
|---|---|---|
DJANGO_SETTINGS_MODULE |
config.settings.local |
Module ρυθμίσεων |
SECRET_KEY |
(αλλαγή σε παραγωγή) | Μυστικό κλειδί Django |
DEBUG |
True |
Λειτουργία debug (τοπικά) |
ALLOWED_HOSTS |
localhost,127.0.0.1 |
Επιτρεπόμενοι HTTP hosts (δείτε κινητό παρακάτω) |
ALLOWED_HOSTS_EXTRA |
(κενό) | Επιπλέον hosts, χωρισμένα με κόμμα |
DJANGO_BIND |
0.0.0.0 |
Διεύθυνση ακρόασης (0.0.0.0 = πρόσβαση από LAN) |
DJANGO_PORT |
8765 |
Θύρα dev server (όχι η 8000 του Django) |
SITE_BASE_URL |
http://127.0.0.1:8765 |
Δημόσιο base URL για QR και συνδέσμους |
CSRF_TRUSTED_ORIGINS |
(αυτόματα στο local) | Προαιρετική παράκαμψη CSRF |
DATABASE_URL |
SQLite | Σύνδεση βάσης |
REDIS_URL |
redis://127.0.0.1:6379/1 |
Redis (cache / channels) |
USE_INMEMORY_CHANNELS |
True |
WebSockets στη μνήμη τοπικά· False με Redis |
Το SITE_BASE_URL πρέπει να ταιριάζει με το πώς ανοίγετε την εφαρμογή (host + θύρα). Μετά από αλλαγή, επαναδημιουργήστε τα QR:
python manage.py generate_qr_codesΗ εφαρμογή χρησιμοποιεί προεπιλογή τη θύρα 8765 αντί για την 8000 του Django, ώστε να μην συγκρούεται με άλλες τοπικές εφαρμογές.
| Εντολή | Αποτέλεσμα |
|---|---|
python manage.py runserver |
Εκκίνηση στο 0.0.0.0:8765 (DJANGO_BIND + DJANGO_PORT από .env) |
python manage.py runserver 127.0.0.1:9000 |
Συγκεκριμένο host/θύρα (υπερισχύει της προεπιλογής) |
Αλλαγή προεπιλεγμένης θύρας στο .env:
DJANGO_PORT=9000
SITE_BASE_URL=http://127.0.0.1:9000Κάντε επανεκκίνηση του runserver μετά την επεξεργασία του .env και, αν χρησιμοποιείτε εκτυπωμένα QR, τρέξτε generate_qr_codes.
Το config/settings/local.py αυτόματα:
- Προσθέτει το LAN IP του Mac στα
ALLOWED_HOSTS - Δημιουργεί
CSRF_TRUSTED_ORIGINSγια σύνδεση από κινητό
- Mac και κινητό στο ίδιο Wi‑Fi (όχι guest).
- Στο
.env, κρατήστεDJANGO_BIND=0.0.0.0. - Επιτρέψτε εισερχόμενα για Python στο LuLu (ή το firewall σας).
- IP του Mac:
ipconfig getifaddr en0 - Στο κινητό:
http://<MAC-IP>:8765/login/pin/(PIN σερβιτόρου:2222).
Προαιρετικά — QR με διεύθυνση LAN:
SITE_BASE_URL=http://192.168.1.42:8765
ALLOWED_HOSTS_EXTRA=192.168.1.42Έλεγχος hosts:
python manage.py shell -c "from django.conf import settings; print(settings.ALLOWED_HOSTS)"| Ρόλος | Όνομα χρήστη | Κωδικός | PIN |
|---|---|---|---|
| Διαχειριστής | admin |
admin1234 |
0000 |
| Manager | manager |
manager1234 |
1111 |
| Σερβιτόρος | waiter |
waiter1234 |
2222 |
| Σερβιτόρος 2 | waiter2 |
waiter2234 |
2233 |
| Κουζίνα | kitchen |
kitchen1234 |
3333 |
| Ταμίας | cashier |
cashier1234 |
4444 |
- Σύνδεση με κωδικό:
/login/ - Σύνδεση με PIN (κοινό tablet):
/login/pin/
Δημιουργία ή ανανέωση λογαριασμών (απαιτείται υπάρχον εστιατόριο — σε κενή βάση τρέξτε πρώτα seed_demo):
python manage.py seed_demo_usersΣε demo servers, ορίστε DEMO_SHOW_LOGIN_HINTS=True στο .env για εμφάνιση του πίνακα στις σελίδες σύνδεσης (προεπιλογή: ίδια με DEBUG).
| Ρόλος | Δυνατότητες |
|---|---|
| Σερβιτόρος | Τραπέζια, άνοιγμα συνεδρίας, παραγγελίες (+ ποσότητα δίπλα στο +, ζωντανή σύνοψη), αποστολή στην κουζίνα, κλείσιμο τραπεζιού (λογαριασμός + ελευθερο τραπέζι) |
| Κουζίνα | KDS — εισερχόμενες παραγγελίες, ενημέρωση κατάστασης (WebSocket) |
| Manager | Μενού & κατηγορίες (δίγλωσσο), στοιχεία επιχείρησης, προεπισκόπηση μενού πελατών, εκτύπωση QR, τραπέζια/όροφοι, κάτοψη, αναφορές |
| Admin | Ό,τι ο manager + διαχείριση χρηστών (/staff/users/) |
| Διεύθυνση | Περιγραφή |
|---|---|
/login/ |
Σύνδεση με κωδικό |
/login/pin/ |
Σύνδεση με PIN |
/tables/ |
Λίστα τραπεζιών & κάτοψη (φίλτρο ορόφου) |
/orders/new/<session_id>/ |
Παραγγελία σερβιτόρου |
/kitchen/ |
Οθόνη κουζίνας |
/menu/ |
Διαχείριση μενού |
/menu/guest/ |
Προεπισκόπηση μενού πελατών & εκτύπωση QR |
/company/ |
Στοιχεία επιχείρησης / νομικός κατάλογος |
/staff/users/ |
Χρήστες προσωπικού (μόνο admin) |
/qr/<table-uuid>/ |
Δημόσιο μενού (ανά τραπέζι) |
/qr/menu/<restaurant-uuid>/ |
Κοινό μενού (χωρίς τραπέζι) |
/api/v1/ |
REST API |
/admin/ |
Django admin |
Η εφαρμογή είναι προεπιλεγμένα στα Ελληνικά. Χρησιμοποιήστε τον διακόπτη ΕΛ / EN στη γραμμή πλοήγησης.
Μετά από αλλαγές κειμένων στα templates:
python manage.py makemessages -l el --ignore=.venv
# Επεξεργασία locale/el/LC_MESSAGES/django.po
python manage.py compilemessages -l elΟνόματα πιάτων, περιγραφές και κατηγορίες αποθηκεύονται ανά γλώσσα (name_el, name_en, κ.λπ.) μέσω django-modeltranslation.
- Επεξεργασία προϊόντων στο
/menu/items/<id>/edit/(πεδία EL + EN) - Ή μέσω Django admin
Συγχρονισμός παλιών δεδομένων μίας γλώσσας:
python manage.py sync_menu_translations- Συνδεθείτε ως manager ή admin
- Ανοίξτε Μενού πελατών (
/menu/guest/) - Δείτε την προεπισκόπηση όπως ο πελάτης
- Εκτυπώστε:
- Ένα QR για όλα τα τραπέζια — ίδιο μενού παντού
- QR ανά τραπέζι — εμφανίζει το όνομα τραπεζιού στο μενού και την εκτύπωση
Ορίστε SITE_BASE_URL στο .env στο δημόσιο URL σας (πρωτόκολλο + host + θύρα) ώστε τα QR να λειτουργούν από κινητά. Δείτε Ρυθμίσεις (.env).
- Διαχείριση τραπεζιών — προσθήκη/επεξεργασία/διαγραφή, αριθμός θέσεων
- + Προσθήκη ορόφου — modal για νέους ορόφους· φίλτρο ανά όροφο
- Κάτοψη — μετακίνηση τραπεζιών, αποθήκευση διάταξης
python manage.py seed_demo # Demo εστιατόριο, μενού, προσωπικό, τραπέζια
python manage.py seed_demo_users # Μόνο demo προσωπικό (κωδικοί + PIN)
python manage.py generate_qr_codes # Επαναδημιουργία QR εικόνων
python manage.py rotate_qr_tokens # Νέα tokens QR (ακυρώνει παλιούς συνδέσμους)
python manage.py sync_menu_translations
python manage.py close_stale_orders --hours 8
python manage.py export_daily_report --date 2026-05-23
python manage.py compilemessages -l elcp .env.example .envΕπεξεργασία .env:
DATABASE_URL=postgres://baresto:baresto@db:5432/baresto
REDIS_URL=redis://redis:6379/1
USE_INMEMORY_CHANNELS=False
DJANGO_PORT=8765
SITE_BASE_URL=http://127.0.0.1:8765docker compose up --buildΔιεύθυνση: http://127.0.0.1:8765
pytestΑντιγράψτε τα logos στο static/brand/ (δείτε static/brand/README.md):
cp images/barestomanager-horizontal-logo.png static/brand/baresto-horizontal.png
cp images/barestomanager-vertical-logo.png static/brand/baresto-vertical.pngEN: Copyright © 2026 Antonis Tzounis. Released under the MIT License — see LICENSE for the full text. Project website: barestomanager.eu.
EL: Πνευματικά δικαιώματα © 2026 Antonis Tzounis. Διατίθεται υπό MIT License — δείτε το LICENSE για το πλήρες κείμενο. Ιστοσελίδα: barestomanager.eu.
EN: Python dependencies are listed in requirements/. The staff UI also loads these CDN assets at runtime: Chart.js (reports), HTMX, Alpine.js, and Tailwind CSS. Core frameworks include Django, Django REST Framework, and Django Channels.
EL: Οι εξαρτήσεις Python αναφέρονται στο requirements/. Η διεπαφή προσωπικού φορτώνει επίσης από CDN: Chart.js (αναφορές), HTMX, Alpine.js και Tailwind CSS. Βασικά frameworks: Django, Django REST Framework και Django Channels.







