# Webin 3.7 — localhost installation 1. Start Apache and MySQL in your local PHP/XAMPP installation. Use PHP 8.3 with mysqli, mbstring, XML, GD and OpenSSL enabled. 2. Extract the ZIP so the folder is `htdocs/webin`. 3. Open `http://localhost/webin/` and sign in with your existing Saleculator web administrator account. The ZIP includes working `application/config/config.php` and `application/config/database.php`; no example-file copying is needed. The default connection is **127.0.0.1:3306**, database **saleculator**, MySQL user **root**, password **password**, matching the standard local Saleculator setup. An existing Saleculator database is required. This package does not create a database, reset passwords, import sample orders, or execute historical SQL scripts. If your MySQL settings differ (including XAMPP's empty root password), edit database.php or set `WEBIN_DB_HOST`, `WEBIN_DB_PORT`, `WEBIN_DB_NAME`, `WEBIN_DB_USER` and `WEBIN_DB_PASSWORD`. An explicitly empty password is supported. On systems with case-sensitive database names, use your database's exact name. The URL follows the requested localhost/LAN host, port and extracted folder. Apache needs mod_rewrite and AllowOverride enabled for the included .htaccess. For a public hostname or reverse proxy, set `WEBIN_BASE_URL` including the folder and trailing slash. For a mobile waiter app, use the computer's LAN address, for example `http://192.168.1.100/webin`, while connected to the same network. Allow Apache from the local subnet in the host firewall. `localhost` on a phone refers to the phone itself. Waiter → Server → Check connection verifies the server/database contract; Settings → Setup and connection check reviews the device and printer configuration. New installations store waiter recovery data in `saleculator-private/waiter` beside the web server's document-root folder, outside the served directory. The PHP account needs write permission there. Set `WEBIN_PRIVATE_PATH` or `SALECULATOR_WAITER_STATE_DIR` for another private durable location. Session storage can be customized with `WEBIN_SESSION_PATH`. Back up the database and waiter recovery data together. ## Existing installations Back up the existing code, database, configuration and waiter recovery directory. This ZIP contains actual config files and will replace them if extracted over an installation. Preserve your installation-specific settings before copying updated files. If you already have waiter reservations, retain your existing recovery directory with `SALECULATOR_WAITER_STATE_DIR`; do not silently switch an active installation to a new empty state directory. No database migration is required for this release. ## Waiter 1.3.0 Use the new release-signed APK, Android 7 or newer, and the current Saleculator POS/PDA waiter-order importer. The earlier debug APK has a different signing certificate and cannot be updated in place with this release. Complete or recover outstanding orders before replacing it, then activate, configure and sign in again; older local saved data is not migrated. Configure billing and KOT1–KOT5 printers per device. `Waiter.Print.Bill` and `Waiter.Print.KOT` are optional JSON resources in POS Resources; built-in defaults are included. KOT new/change/cancellation uses one resource. Phones print directly without a central print queue. Multilingual text is shaped on Android and sent as raster output; verify the intended language/font and paper output on the real device/printer. Offline KOTs are allowed only for tables already reserved on that phone. Stop using the old phone and reconcile unbacked-up changes before a manager transfers a table. Explicit ownership/session rejections still block printing. Request Bill requires Webin and hands the order to the cashier; it does not record payment. Physical printer, multi-phone handover and POS/PDA cashier acceptance must be performed at the restaurant. Server and automated printer doubles cannot establish actual paper delivery.