=== Libre Bite – Restaurant POS, Kitchen Display (KDS) & QR Ordering for WooCommerce === Contributors: simon61 Donate link: https://github.com/simurech/libre-bite Tags: woocommerce, restaurant, pos, ordering, food-delivery Requires at least: 6.0 Tested up to: 7.1 Requires PHP: 8.1 Requires Plugins: woocommerce Stable tag: 3.6.1 License: GPL-2.0-or-later License URI: https://www.gnu.org/licenses/gpl-2.0.html Stress-free orders, happy guests, full tables — the WooCommerce plugin built for restaurants, take-aways, and cafés. == Description == **More orders, less stress — Libre Bite turns WooCommerce into your restaurant's operational backbone.** No commission fees, no SaaS lock-in: your guests order online or at the table via QR code, pay with card, cash, or Twint, and your kitchen sees every order live on the board — all inside WordPress. **Start for free. Upgrade only when you need more.** --- = Free to Start = All core features are available completely free of charge — no credit card, no trial period, no hidden limits. A Pro subscription is only required for advanced features such as multi-location management, table ordering, optimised checkout, tipping, and pickup reminders. Pro plans are priced to be affordable — significantly cheaper than dedicated restaurant SaaS platforms. **7-day free Pro trial — no payment required.** --- = Built on WordPress & WooCommerce = Libre Bite is a WordPress plugin. It extends WooCommerce — the proven e-commerce foundation used by millions of sites worldwide. * **No new platform to learn** — manage everything inside your existing WordPress dashboard. * **Your products stay WooCommerce products** — set them up once and they appear in the POS, checkout, and online shop automatically. * **Use any WooCommerce-compatible payment gateway** — cash, card, Twint, Stripe, PayPal, or any other gateway you already have. Libre Bite charges **no transaction fees**. * **Offline payments supported** — "Pay at pickup", "Pay at table", or any custom payment method via standard WooCommerce. --- = For Whom Is Libre Bite? = Libre Bite is built for **small and micro gastronomy businesses** — operations that want serious software without enterprise-level costs or delivery platform commissions. * **Restaurants** — Take dine-in and take-away orders, keep the kitchen informed, delight guests with smooth service. * **Take-Away & Fast Food** — Serve walk-ins fast with an integrated counter POS, accept card and Twint payments, no third-party fees. * **Cafés & Bars** — Handle product extras, tips, and order flow without juggling multiple tools. * **Multi-location businesses** — Run all branches from one WordPress installation, each with its own order board and POS (Pro). --- = Modular by Design = Only activate the features your business actually needs. Unused modules stay hidden — no cluttered menus, no unnecessary complexity. --- = Core Features (Free) = **Live Kanban Order Board (KDS)** A real-time kitchen display that visualizes every incoming WooCommerce order as a card. Move an order through Pre-orders → Prepare Now → Completed with a single click — without reloading the page. Renaming, adding, or reordering columns, and dragging cards between them, is available as a Pro add-on. **Integrated Point of Sale (POS)** A clear POS interface for walk-in customers. Add products to the order, accept payments — all without leaving WordPress. **Location Management** Create and manage branches, each with its own address, opening hours, and order routing. Works immediately for single-location businesses. **Swiss 5-Cent Rounding** Built-in support for the Swiss rounding rule (5-cent rounding). Indispensable for restaurants and retail in Switzerland. **Pickup Time Slots** Customers choose a time slot for pickup directly during checkout. Relieve peak hours and better manage kitchen capacity. **Product Options** Add configurable options to any WooCommerce product — sizes, sauces, toppings, preparation notes — with optional price markups. **Modular Feature Control** Only enable what your business really needs. Each module can be independently toggled on or off in the admin area. **WooCommerce HPOS Compatible** Fully tested with WooCommerce High-Performance Order Storage (HPOS). Safe for modern, high-traffic setups. **Sound Notifications** A browser signal tone when a new order arrives on the Kanban board, so the kitchen doesn't have to watch the screen. Uploading your own custom sound file via the media library is a Pro feature. --- = Pro Features (Subscription required) = **Table Ordering (QR Code)** Generate a QR code for each table. Guests scan it and order directly — no address or pickup time fields required. Orders appear in the dashboard with the table name. **Multi-Location Management** Manage an unlimited number of branches. Each location gets its own Kanban board, POS configuration, and separate order flow — managed centrally via one WordPress installation. **Optimized Checkout Flow** A conversion-focused checkout process for gastronomy businesses — fewer steps, cleaner layout, mobile-first. **Advanced Tipping System** Customers can select percentage tip suggestions (e.g., 5%, 10%, 15%) or enter a custom amount. Tip amounts are saved per order and broken out separately in the statistics. **Automatic Pickup Reminders** Automatic email reminders to customers X minutes before the scheduled pickup time. Fewer no-shows, better pickup experience. **Nutritional Info & Allergen Labeling** Nutritional values and allergen declarations for every product, displayed clearly on the product page. Includes a printable allergen matrix covering the 14 EU-listed allergens, to help you meet allergen labeling requirements. **Promotions & Announcements** Rule-based offers WooCommerce does not know by itself: buy several pay for fewer, a discount on a category, money off above a cart value — each limited to certain weekdays or times. Plus an announcement bar. **Stamp Card** One stamp per completed order, then a discount voucher. Guests grasp "every tenth order is cheaper" immediately. **Theme-independent Menu View** Output your menu in its own layout — category navigation, product cards, a dialog for variations and add-ons, and a slide-in order panel. Works with any theme, no template editing required. **Dietary Labels & Filter** Label dishes as vegan, vegetarian, gluten-free and more. Guests filter the menu without reloading the page. **Scheduled Availability** Limit products or whole categories to certain weekdays, times of day or date ranges. A breakfast menu that disappears at 11:30, a seasonal item that only shows in December. **Order Bumps** Offer matching extras right above the pay button. Added as real line items, so they appear on the kitchen ticket and count in the statistics. **Time Slot Capacity** Cap how many orders each time slot accepts, so the kitchen is not flooded at peak times. **Guest Notes** Keep allergies and preferences on the customer account and show them to staff when a returning guest reserves a table. **SMS Notifications** Send a short text message when an order is ready. Uses your own Twilio account — no order or customer data passes through us. **Customizable Kanban Columns** Rename, add, remove and reorder the columns of the Kanban order board to match your own workflow — mark any number of columns as "completed", add a one-step back button per order card, and optionally enable drag & drop between columns (Pro). --- = Why Libre Bite? = Delivery platforms take up to 30% commission. Dedicated restaurant SaaS tools charge monthly fees on top of that. Libre Bite is different: own your ordering system, pay no commissions, and keep every franc. * **Commission-free ordering** — guests order directly on your website, no platform cut * **No transaction fees** — ever * **No order limits, no quotas** — take as many orders and reservations as you want, in every plan * **No usage tracking** — your orders and reservations are never counted, hashed, or reported to any external server * **Twint, card, cash** — accept any payment WooCommerce supports * **Swiss 5-cent rounding built in** — essential for CHF cash payments * **Separate VAT rates for takeaway and dine-in** — handled correctly, not bolted on (Pro) * **QR code ordering at the table** — guests scan, choose, and pay in seconds (Pro) * **Split payments and open tabs** — settle one bill across several payment methods, or keep a table running (Pro) * **Multiple locations from one installation** — each branch with its own board, POS, and order flow (Pro) * **Modular** — activate only what your business needs, nothing else * **Your data stays yours** — in your own WordPress installation * **Affordable Pro plans** — designed for small businesses, not enterprise budgets * **7-day free Pro trial** — no payment required --- = Works on Any Device = Libre Bite works on any device — no app installation required. Use it with a mouse and keyboard on a desktop or laptop, or with touch input on a tablet. The Kanban order board, POS interface, and reservation dashboard are optimised for touch-first operation, making them well-suited for use on a tablet mounted at the counter or kitchen pass. --- = How to Run Libre Bite = **Option 1 — Extend your existing website** Install Libre Bite directly into your existing WordPress/WooCommerce site. Any theme is compatible — no design changes required. **Option 2 — Standalone installation (subdomain)** Run Libre Bite as a dedicated installation on a subdomain, such as `order.myrestaurant.com` — completely independent from your main website, purpose-built for your gastronomy operation. **Option 3 — Managed hosting by Libre Bite** Libre Bite handles the complete setup: installation, configuration, hosting, and ongoing maintenance — from A to Z. Available as a paid service. Get in touch via https://pulacha-labs.ch/ --- = External Services = This plugin uses **Freemius**, a third-party platform for managing licenses, subscriptions, and plugin updates for the Pro version. During plugin activation, you can opt-in to data sharing with Freemius. Basic information about your website (WordPress version, PHP version, active plugins) is transmitted to Freemius to enable license validation and usage analysis. **Opt-in is completely optional.** All free core features work without opt-in. * Freemius Privacy Policy: https://freemius.com/privacy/ * Freemius Terms of Service: https://freemius.com/terms/ No data is sent to Freemius if you skip or decline the opt-in during activation. Libre Bite uses the **goQR.me API** (https://goqr.me/api/) to render QR code images in the WordPress admin area. This happens in two places: the location editor, which generates a QR code linking to your menu for a specific location (free feature), and the table editor, which generates a QR code for table ordering (Pro feature). Only the encoded target URL of your own website is transmitted, so that the service can render the matching image. No personal data, customer data, or order data is sent. The request is only made while an administrator has the corresponding editor screen open — never during a customer order or on any public page. * goQR.me API: https://goqr.me/api/ * goQR.me Privacy Policy: https://goqr.me/privacy-policy/ If you enable the optional SMS Notifications feature (Pro), Libre Bite sends the customer's phone number and a short status message to **Twilio** (https://www.twilio.com/) using your own Twilio account, so Twilio can deliver the text message. This only happens when the SMS feature is switched on and an order reaches the status you configured as the trigger — it never runs otherwise. You provide and control your own Twilio credentials; no order or customer data passes through Libre Bite's own servers. * Twilio Privacy Policy: https://www.twilio.com/en-us/legal/privacy * Twilio Terms of Service: https://www.twilio.com/en-us/legal/tos == Installation == 1. Upload the plugin folder to the `/wp-content/plugins/libre-bite` directory, or install the plugin through the WordPress plugins screen directly. 2. Activate the plugin through the **Plugins** screen in WordPress. 3. Make sure **WooCommerce** is installed and active — Libre Bite requires WooCommerce. 4. Follow the setup assistant — it checks your environment, lets you pick the modules you need, and can create a sample menu so you are not starting from an empty shop. 5. Alternatively, navigate to **Libre Bite** in the admin menu to configure locations, enable modules, and set up the POS and Kanban board. == Frequently Asked Questions == = Is WooCommerce mandatory? = Yes. Libre Bite is a WooCommerce extension. WooCommerce must be installed and active for Libre Bite to work. WooCommerce 8.0 or later is recommended. = Which payment methods are supported? = Libre Bite uses WooCommerce's standard payment system. Any WooCommerce-compatible payment gateway works — including Stripe, PayPal, Twint, cash on pickup, card at counter, and more. Libre Bite charges **no transaction fees**. You pay only for your payment gateway (if any) and the optional Pro subscription. = Can customers pay in cash or at the counter? = Yes. WooCommerce includes offline payment methods such as "Cash on Delivery" or "Pay in Person". You can rename and configure these freely — for example "Pay at pickup" or "Pay at the counter". = Is the plugin compatible with WooCommerce HPOS? = Yes. Libre Bite is fully compatible with WooCommerce High-Performance Order Storage (HPOS). It has been tested with both legacy post-based storage and the new Custom Order Tables. = Does Libre Bite work with the WooCommerce Checkout block? = Not yet. Libre Bite's location selection, time slots, order bumps, and tip settings currently rely on the classic WooCommerce checkout. If your checkout page uses the Checkout block, edit that page, select the Checkout block, and use its sidebar option to switch back to the classic shortcode (or replace it with a Shortcode block containing `[woocommerce_checkout]`). Libre Bite shows an admin notice with the same instructions whenever it detects the block on your checkout page. Official Checkout block support is on the roadmap. = Can I manage multiple restaurant locations? = Multi-location management is included in the Pro version. The free version supports a single location with full configuration of address, opening hours, and order routing. = What is Swiss 5-Cent Rounding? = In Switzerland, cash payments are rounded to the nearest 5 cents as 1- and 2-cent coins are no longer in circulation. Libre Bite applies this rounding rule at checkout, switched on by default for shops using CHF and off by default for any other currency — either way, it's a single toggle in Settings. = Does the POS system work offline? = The integrated POS system requires an active WordPress/WooCommerce session and an internet connection. It is a browser-based interface that currently does not support offline mode. = Are there any order or reservation limits? = No. Libre Bite never limits how many orders, reservations, or locations you can handle — not in the free version and not in any Pro plan. Your order volume is never counted, transmitted, or validated against an external server, so your ordering system keeps working even if our servers do not. = Does Libre Bite share my data with third parties? = Libre Bite uses Freemius for license management and delivery of Pro features. Data is only transmitted to Freemius if you explicitly opt-in during activation. No order, customer, or product data is transmitted — only basic website environment information (PHP version, WP version, plugin list). For more details, see the Freemius Privacy Policy: https://freemius.com/privacy/ = What are the minimum requirements? = * WordPress 6.0 or higher * WooCommerce 8.0 or higher * PHP 8.1 or higher (PHP 8.2+ recommended) * A modern browser for Kanban board and POS interface = Is Libre Bite available in multiple languages? = Yes. English is the source language, and the plugin ships with complete translations for Swiss, German and Austrian German (de_CH, de_DE, de_AT, plus the formal and informal variants), Swiss French (fr_CH) and Swiss Italian (it_CH). Every string is covered. Other languages can be added from the bundled .pot file or through community translations on translate.wordpress.org. == Screenshots == 1. **Kanban Order Board** — Real-time order management for kitchen staff. Update order status with a click as orders move through the board. 2. **POS Interface** — Integrated Point of Sale for walk-in customers and counter orders. 3. **Location Settings** — Configure branch address, opening hours, and order routing. 4. **Checkout Time Slots** — Customers choose their pickup time slot directly during checkout. 5. **Product Options** — Configurable extras and options for each menu item. 6. **Module Settings** — Toggle individual features on or off depending on business needs. == Changelog == = 3.6.1 = * Fix: Branding colors did not reach the announcement banner, since it renders independently of the other frontend shortcodes; also added a readable text color for very light brand colors. * Fix: Reservation statuses (Pending/Confirmed/Cancelled/Completed) were hardcoded in English and never translatable. * Feature: New "Redirect Standard Archives to Menu" setting - sends the default WooCommerce shop, category and tag pages to your configured menu page instead of leaving duplicate content. * Feature: New WordPress dashboard widget showing today's order count and revenue per location, plus the average time from "preparing" to "completed" over the last 7 days. * Fix: On pages using WooCommerce's own [products] shortcode without pagination, the dietary and location filter bars never appeared, and the availability hint showed as unstyled full content instead of a compact popup. * Feature: The theme-independent menu view ([lbite_menu]) now has a dietary filter bar, a location switcher, and a subtle "View product details" link on each item - none of these existed there before. * Fix: The floating "Your order" button in the menu view had unreadable text, since a generic style rule overrode the button's own text color. * Fix: The dietary filter's reset button in the menu view kept the browser's native button styling and looked broken; the section navigation also stayed visually highlighted after a click even though it only scrolls the page. * Fix: The dietary and location filter bars on the shop page were narrower than the rest of the page content. * Feature: Dietary Labels and Dietary Filter are now two independent settings, so a shop can show labels without the filter bar or the other way around. Existing installs keep their current behavior automatically. * Feature: The stamp card now has its own tab in My Account, next to Dashboard and Orders, instead of appearing inside the Dashboard tab. * Feature: The statistics page and its dashboard widget now also show average order preparation time, overall and per location. = 3.6.0 = * Fix: Adding an item in the theme-independent menu view showed the theme's own "View cart" link next to the button, shifting the product grid; the slide-in cart now opens automatically instead. * Fix: Branding colors could fail to reach the menu view, the reservation form, and the stamp card, since only pages using the location selector shortcode received them; broadened to all Libre Bite frontend shortcodes and unified with the admin/POS color logic (previously two separate implementations). * Feature: Text on branded buttons (e.g. the floating "Your order" button) now automatically switches between light and dark to stay readable against the chosen brand color. * Feature: New "Default Location" setting under Settings → Locations, used whenever a guest cannot pick a location themselves - most importantly when "Location Selection" is turned off. Orders, the add-to-cart location check, and the `[lbite_location_selector]` shortcode all fall back to it instead of leaving the order without a location. * Fix: With "Location Selection" turned off, the location selector shortcode kept showing the full picker instead of respecting the setting, and could show a raw browser error if a guest still interacted with it. * Fix: A location without configured opening hours was treated as always closed for pre-orders and reservations (and as "unknown" for the live status badge) instead of open 24/7; unified across checkout, the status badge, and reservations. * Feature: The reservation form now checks opening hours as soon as a date/time is chosen, instead of only rejecting it after all three steps are filled in. = 3.5.5 = * Fix: The 3.5.4 fix for the two Plugin Check errors was incomplete (escaping was applied at variable assignment instead of at the point of output); corrected and verified against the official Plugin Check tool directly, not just by re-reading the code. = 3.5.4 = * Fix: Two WordPress Plugin Check errors (missing translators comment in the setup wizard's stamp card preview; an unescaped variable in the stamp card frontend display) that were failing the automated code-quality check. = 3.5.3 = * Fix: Currency symbols without a dedicated Unicode character (e.g. CHF) appeared as literal HTML entity codes instead of the actual symbol in the Setup Wizard tip preview, the Checkout Tips settings preview, the POS cart/payment screen, and the Product Options price label. = 3.5.2 = * Fix: On the Kanban order board, the order info text in the card footer could be squeezed out of view by the action buttons. = 3.5.1 = * Fixed: the two background tasks (pickup reminders, pre-order status changes) ran every minute on every installation, even on shops that never use pre-orders or reminders; they're now only scheduled while the relevant feature is actually on, and the custom schedule interval was renamed to avoid colliding with another plugin's identically-named one. * Fixed: the pickup-reminder and pre-order background checks could have a backlog of old, already-handled orders crowd out the ones that actually need attention right now, since older entries weren't filtered out or prioritized. They're now scoped to the relevant time window and processed soonest-first. * Fixed: three read-only endpoints (time slots, opening days, location status) required a security token that had a limited lifetime; if a page-caching plugin or CDN served a cached copy of the page for longer than that, checkout would silently stop working until the visitor reloaded. These endpoints only return public information, so the token requirement was removed. * Fixed: the guest-notes phone lookup used a database search pattern that can't use an index and gets slower as the customer list grows; it now compares a pre-normalized number directly instead. * Fixed: the POS product cache used a direct database delete to clear itself, which does nothing on sites using a Redis/Memcached object cache — stale product data could persist there indefinitely after a change. It also didn't clear when stock levels changed automatically. Both are fixed with a version-counter approach that works with any caching setup. * Fixed: the till's coupon picker could be crowded out by personal, single-use reward coupons (e.g. from the stamp card) or already fully-used coupons, hiding real promotional codes on shops with many loyalty rewards. * Fixed: reservation card details (name, phone, notes, guest allergies) were escaped twice, so an apostrophe or ampersand in a reservation showed up as a literal HTML code instead of the actual character. * Fixed: a translation-loading order bug meant this plugin's own included translations always overrode community translations from wordpress.org for any string both contained, rather than the other way around as intended. * Fixed: a public-facing checkout endpoint compared a security value using a plain string comparison, which is more vulnerable to timing-based attacks than the constant-time comparison already used by a nearly-identical endpoint elsewhere in the plugin. * Changed: several inline `